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..1035111
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.datamart.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..2c44359
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,37 @@
+<?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.authentication</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.bpm.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.preferences</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils.blob</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils.ui</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.authorization</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.blip</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.cube</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart.common</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.datamartdsl.feature/.project b/org.eclipse.osbp.xtext.datamartdsl.feature/.project
new file mode 100644
index 0000000..a0dd38b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.feature/LICENSE.txt b/org.eclipse.osbp.xtext.datamartdsl.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.feature/build.properties b/org.eclipse.osbp.xtext.datamartdsl.feature/build.properties
new file mode 100644
index 0000000..b8920ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.feature/epl-v10.html b/org.eclipse.osbp.xtext.datamartdsl.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.feature/feature.properties b/org.eclipse.osbp.xtext.datamartdsl.feature/feature.properties
new file mode 100644
index 0000000..8f71c0b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.feature/feature.properties
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.feature/feature.xml b/org.eclipse.osbp.xtext.datamartdsl.feature/feature.xml
new file mode 100644
index 0000000..ca50854
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.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.datamartdsl"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.datamartdsl.tests"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.datamartdsl.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.feature/license.html b/org.eclipse.osbp.xtext.datamartdsl.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.feature/pom.xml b/org.eclipse.osbp.xtext.datamartdsl.feature/pom.xml
new file mode 100644
index 0000000..883709e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.feature/pom.xml
@@ -0,0 +1,93 @@
+<?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.datamartdsl</groupId>
+		<artifactId>org.eclipse.osbp.xtext.datamartdsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.xtext.datamartdsl.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>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>javadoc-jar</id>
+						<phase>package</phase>
+						<goals>
+							<goal>jar</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+
+	<dependencies>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.datamartdsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.datamartdsl</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.datamartdsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.datamartdsl.tests</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.datamartdsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.datamartdsl.ui</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.feature/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.datamartdsl.feature/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.feature/src/main/javadoc/README.txt
@@ -0,0 +1 @@
+Resource folder for javadoc resources.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.datamartdsl.feature/src/overview.html b/org.eclipse.osbp.xtext.datamartdsl.feature/src/overview.html
new file mode 100644
index 0000000..0319212
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.feature/src/overview.html
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+	<title>OSBP Tools Graphical Entity</title>
+</head>
+<body>
+<p>The <strong>OSBP&nbsp;Xtext&nbsp;datamart&nbsp;</strong>contains common methods for the datamart DSL. Encapsulates SQL/OLAP mapping and some helper methods..</p>
+
+<p>&nbsp;</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.tests/.project b/org.eclipse.osbp.xtext.datamartdsl.tests/.project
new file mode 100644
index 0000000..a2a42d7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.tests/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/LICENSE.txt b/org.eclipse.osbp.xtext.datamartdsl.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.datamartdsl.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b8fb73e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.datamartdsl.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.datamartdsl.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ com.google.inject;bundle-version="3.0.0",
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)",
+ org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamartdsl.ui;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.validation,
+ javax.validation.constraints,
+ org.apache.log4j,
+ org.hamcrest.core,
+ 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"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.datamartdsl;version="0.9.0"
diff --git a/org.eclipse.osbp.xtext.datamartdsl.tests/about.html b/org.eclipse.osbp.xtext.datamartdsl.tests/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/about.ini b/org.eclipse.osbp.xtext.datamartdsl.tests/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/about.mappings b/org.eclipse.osbp.xtext.datamartdsl.tests/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/about.properties b/org.eclipse.osbp.xtext.datamartdsl.tests/about.properties
new file mode 100644
index 0000000..cf6ff0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.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.datamartdsl.tests/build.properties b/org.eclipse.osbp.xtext.datamartdsl.tests/build.properties
new file mode 100644
index 0000000..ca98c73
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.tests/build.properties
@@ -0,0 +1,14 @@
+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.datamartdsl.tests/epl-v10.html b/org.eclipse.osbp.xtext.datamartdsl.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/license.html b/org.eclipse.osbp.xtext.datamartdsl.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.tests/org.eclipse.osbp.xtext.datamartdsl.tests.launch b/org.eclipse.osbp.xtext.datamartdsl.tests/org.eclipse.osbp.xtext.datamartdsl.tests.launch
new file mode 100644
index 0000000..3fe401b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.tests/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.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.datamartdsl.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.datamartdsl.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.tests/pom.xml b/org.eclipse.osbp.xtext.datamartdsl.tests/pom.xml
new file mode 100644
index 0000000..a9134ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.tests/pom.xml
@@ -0,0 +1,24 @@
+<?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.datamartdsl.tests</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<parent>
+		<groupId>org.eclipse.osbp.xtext.datamartdsl</groupId>
+		<artifactId>org.eclipse.osbp.xtext.datamartdsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/.project b/org.eclipse.osbp.xtext.datamartdsl.ui/.project
new file mode 100644
index 0000000..8f57686
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/LICENSE.txt b/org.eclipse.osbp.xtext.datamartdsl.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.datamartdsl.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..51d44ba
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,47 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.datamartdsl.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.datamartdsl.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ com.google.inject,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ 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.jdt.debug.ui,
+ javax.persistence;bundle-version="2.1.0",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.preferences;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils.blob;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils.ui;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.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.datamartdsl.ui;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.contentassist;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.labeling;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.outline;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.ui.quickfix;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.datamartdsl.ui.internal.DatamartDSLActivator
+Import-Package: javax.validation,
+ javax.validation.constraints,
+ org.apache.log4j
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/about.html b/org.eclipse.osbp.xtext.datamartdsl.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/about.ini b/org.eclipse.osbp.xtext.datamartdsl.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/about.mappings b/org.eclipse.osbp.xtext.datamartdsl.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/about.properties b/org.eclipse.osbp.xtext.datamartdsl.ui/about.properties
new file mode 100644
index 0000000..5ca6def
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.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.datamartdsl.ui/build.properties b/org.eclipse.osbp.xtext.datamartdsl.ui/build.properties
new file mode 100644
index 0000000..2113b15
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/build.properties
@@ -0,0 +1,17 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               i18n/,\
+               templates/,\
+               icons/,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  icons/,\
+               LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/epl-v10.html b/org.eclipse.osbp.xtext.datamartdsl.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/i18n/I18N.properties b/org.eclipse.osbp.xtext.datamartdsl.ui/i18n/I18N.properties
new file mode 100644
index 0000000..a8b07cf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/i18n/I18N.properties
@@ -0,0 +1,438 @@
+#
+#Thu Aug 18 14:54:26 CEST 2016
+org.eclipse.osbp.xtext.datamartdsl.AggregationEnum=
+org.eclipse.osbp.xtext.datamartdsl.AggregationEnum.aggregate=
+org.eclipse.osbp.xtext.datamartdsl.AggregationEnum.average=
+org.eclipse.osbp.xtext.datamartdsl.AggregationEnum.deviation=
+org.eclipse.osbp.xtext.datamartdsl.AggregationEnum.summation=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum.chapters=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum.columns=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum.default=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum.pages=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum.rows=
+org.eclipse.osbp.xtext.datamartdsl.AxisEnum.sections=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAddition=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAggregation=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAggregation.of=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAggregation.over=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAggregationFunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAxis=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartAxis.axis=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartColumn=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartColumn.column=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartCondition=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartCondition.condition=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartConditionalExpression=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartConjunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartConjunction.and=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartCube=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartCube.cube=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartCube.nonempty\ values=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartCubeElement=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefineDerivedMeasure=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefineDerivedMeasure.derive=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefineDerivedMeasure.from=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefinition=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefinition.datamart=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefinition.described\ by=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefinition.for\ {=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefinition.from=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDefinition.using=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDerivedMeasure=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDerivedMeasure.derived=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDerivedMeasure.scale=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDisjunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartDisjunction.or=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartElement=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.conditions=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.entity=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.filler\ rows=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.navigation=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.ordering=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.properties=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.to=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartEntity.tracking=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartFunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartFunctionIntParameter=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.condensed=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.default=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.descending=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.detailed=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.except=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.exploded=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.filtered=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.hierarchy=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.level=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.ordered\ by=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartHierarchy.selected=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartImport=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartImport.import=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMeasure=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMeasure.measure=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMeasure.scale=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMember=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMember.one\ to\ many=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMember.to=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMemberTuple=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMemberTuple.of=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMemberTuple.over=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartModel=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartMultiplication=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartNavigation=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartNumberOrElement=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartOperand=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartOrder=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartOrder.order=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartOwner=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartOwner.many\ to\ one=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartOwner.to=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPackage=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPackage.package=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartParameterFunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPrimary=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartProperty=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartProperty.aggregate=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartProperty.on\ axis=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartProperty.property=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartProperty.scale=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPropertyBlob=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPropertyBlob.on\ axis=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPropertyBlob.propertyBlob=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPropertyBlob.resolution=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartPropertyMember=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartRole=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartRole.role=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetAggregation=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetAggregation.of=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetAggregation.over=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetAggregationFunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetFunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetParameterFunction=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetTuple=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSetTuple.of=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSlicer=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSlicer.slicer=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartSource=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.columns=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.conditions=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.host=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.locale=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.port=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.task=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTask.usersEntity=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTaskFilter=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartTaskFilter.filter=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartValue=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartValue.filtered=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartValue.optional=
+org.eclipse.osbp.xtext.datamartdsl.CCDatamartValue.selected=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerAddressCity=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerAddressCity.filler-address\ city=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerAddressPostalcode=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerAddressPostalcode.filler-address\ postalcode=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerData=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerData.fill=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerData.with=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateFuture=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateFuture.filler-date\ future=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateFuture.years=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDatePast=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDatePast.filler-date\ past=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDatePast.years=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateRange=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateRange.filler-date\ range=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerDateRange.years=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonEmail=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonEmail.filler-person\ email=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonFirstName=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonFirstName.filler-person\ first\ name=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonFullName=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonFullName.filler-person\ full\ name=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonGender=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonGender.female\ as=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonGender.filler-person\ gender\ male\ as=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonLastName=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonLastName.filler-person\ last\ name=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonPhone=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerPersonPhone.filler-person\ phone=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRandom=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRandom.filler-signed-double\ random=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRange=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRange.decimals=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRange.filler-signed-double\ range=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedDoubleRange.with=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedIntegerRandom=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedIntegerRandom.filler-signed-integer\ random=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedIntegerRange=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedIntegerRange.filler-signed-integer\ range=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedIntegerRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerSignedIntegerRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextParagraphs=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextParagraphs.filler-text\ paragraps=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextRandom=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextRandom.filler-text\ random=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextSentences=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextSentences.filler-text\ sentences=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextWords=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerTextWords.filler-text\ words=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerType=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRandom=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRandom.filler-unsigned-double\ random=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRange=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRange.decimals=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRange.filler-unsigned-double\ range=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedDoubleRange.with=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedIntegerRandom=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedIntegerRandom.filler-unsigned-integer\ random=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedIntegerRange=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedIntegerRange.filler-unsigned-integer\ range=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedIntegerRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.CCPropertyFillerUnsignedIntegerRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAddition=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation.of=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation.over=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAxis=
+org.eclipse.osbp.xtext.datamartdsl.DatamartAxis.axis=
+org.eclipse.osbp.xtext.datamartdsl.DatamartColumn=
+org.eclipse.osbp.xtext.datamartdsl.DatamartColumn.column=
+org.eclipse.osbp.xtext.datamartdsl.DatamartCondition=
+org.eclipse.osbp.xtext.datamartdsl.DatamartCondition.condition=
+org.eclipse.osbp.xtext.datamartdsl.DatamartConditionalExpression=
+org.eclipse.osbp.xtext.datamartdsl.DatamartConjunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartConjunction.and=
+org.eclipse.osbp.xtext.datamartdsl.DatamartCube=
+org.eclipse.osbp.xtext.datamartdsl.DatamartCube.cube=
+org.eclipse.osbp.xtext.datamartdsl.DatamartCube.nonempty\ values=
+org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure.derive=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure.from=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition.datamart=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition.described\ by=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition.for=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition.for\ {=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition.using=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure.derived=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure.scale=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDisjunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartDisjunction.or=
+org.eclipse.osbp.xtext.datamartdsl.DatamartElement=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.conditions=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.entity=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.filler\ rows=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.navigation=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.ordering=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.properties=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.to=
+org.eclipse.osbp.xtext.datamartdsl.DatamartEntity.tracking=
+org.eclipse.osbp.xtext.datamartdsl.DatamartFunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.condensed=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.default=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.descending=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.detailed=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.except=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.exploded=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.filtered=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.hierarchy=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.level=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.ordered\ by=
+org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy.selected=
+org.eclipse.osbp.xtext.datamartdsl.DatamartImport=
+org.eclipse.osbp.xtext.datamartdsl.DatamartImport.import=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure.measure=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure.scale=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMember=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMember.one\ to\ many=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMember.to=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple.of=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple.over=
+org.eclipse.osbp.xtext.datamartdsl.DatamartModel=
+org.eclipse.osbp.xtext.datamartdsl.DatamartMultiplication=
+org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation=
+org.eclipse.osbp.xtext.datamartdsl.DatamartNumberOrElement=
+org.eclipse.osbp.xtext.datamartdsl.DatamartOperand=
+org.eclipse.osbp.xtext.datamartdsl.DatamartOrder=
+org.eclipse.osbp.xtext.datamartdsl.DatamartOrder.order=
+org.eclipse.osbp.xtext.datamartdsl.DatamartOwner=
+org.eclipse.osbp.xtext.datamartdsl.DatamartOwner.many\ to\ one=
+org.eclipse.osbp.xtext.datamartdsl.DatamartOwner.to=
+org.eclipse.osbp.xtext.datamartdsl.DatamartPackage=
+org.eclipse.osbp.xtext.datamartdsl.DatamartPackage.package=
+org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartPrimary=
+org.eclipse.osbp.xtext.datamartdsl.DatamartProperty=
+org.eclipse.osbp.xtext.datamartdsl.DatamartProperty.aggregate=
+org.eclipse.osbp.xtext.datamartdsl.DatamartProperty.on\ axis=
+org.eclipse.osbp.xtext.datamartdsl.DatamartProperty.property=
+org.eclipse.osbp.xtext.datamartdsl.DatamartProperty.scale=
+org.eclipse.osbp.xtext.datamartdsl.DatamartQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.datamartdsl.DatamartReference=
+org.eclipse.osbp.xtext.datamartdsl.DatamartReference.join=
+org.eclipse.osbp.xtext.datamartdsl.DatamartRole=
+org.eclipse.osbp.xtext.datamartdsl.DatamartRole.role=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation.of=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation.over=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple.of=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer.slicer=
+org.eclipse.osbp.xtext.datamartdsl.DatamartSource=
+org.eclipse.osbp.xtext.datamartdsl.DatamartTask=
+org.eclipse.osbp.xtext.datamartdsl.DatamartTask.columns=
+org.eclipse.osbp.xtext.datamartdsl.DatamartTask.conditions=
+org.eclipse.osbp.xtext.datamartdsl.DatamartTask.task=
+org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter=
+org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter.filter=
+org.eclipse.osbp.xtext.datamartdsl.DatamartValue=
+org.eclipse.osbp.xtext.datamartdsl.DatamartValue.filtered=
+org.eclipse.osbp.xtext.datamartdsl.DatamartValue.optional=
+org.eclipse.osbp.xtext.datamartdsl.DatamartValue.selected=
+org.eclipse.osbp.xtext.datamartdsl.DotExpression=
+org.eclipse.osbp.xtext.datamartdsl.EntityRef=
+org.eclipse.osbp.xtext.datamartdsl.FunctionEnum=
+org.eclipse.osbp.xtext.datamartdsl.FunctionEnum.first=
+org.eclipse.osbp.xtext.datamartdsl.FunctionEnum.last=
+org.eclipse.osbp.xtext.datamartdsl.FunctionEnum.next=
+org.eclipse.osbp.xtext.datamartdsl.FunctionEnum.previous=
+org.eclipse.osbp.xtext.datamartdsl.OperatorEnum=
+org.eclipse.osbp.xtext.datamartdsl.OperatorEnum.<\==
+org.eclipse.osbp.xtext.datamartdsl.OperatorEnum.>\==
+org.eclipse.osbp.xtext.datamartdsl.OperatorEnum.like=
+org.eclipse.osbp.xtext.datamartdsl.OrderEnum=
+org.eclipse.osbp.xtext.datamartdsl.OrderEnum.ascending=
+org.eclipse.osbp.xtext.datamartdsl.OrderEnum.descending=
+org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum=
+org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum.lag=
+org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum.lead=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData.fill=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData.with=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture.filler-date\ future=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture.years=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast.filler-date\ past=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast.years=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange.filler-date\ range=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange.years=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom.filler-signed-double\ random=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange.decimals=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange.filler-signed-double\ range=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange.with=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom.filler-signed-integer\ random=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange.filler-signed-integer\ range=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs.filler-text\ paragraps=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom.filler-text\ random=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences.filler-text\ sentences=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords.filler-text\ words=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom.filler-unsigned-double\ random=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange.decimals=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange.filler-unsigned-double\ range=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange.with=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom.filler-unsigned-integer\ random=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange.filler-unsigned-integer\ range=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange.round\ to=
+org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange.up\ to\ and\ including=
+org.eclipse.osbp.xtext.datamartdsl.QualifiedName=
+org.eclipse.osbp.xtext.datamartdsl.SINT=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum.bottomcount=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum.bottompercentage=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum.bottomsummation=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum.topcount=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum.toppercentage=
+org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum.topsummation=
+org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum=
+org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum.periods=
+org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum.year-to-date=
+org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum=
+org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum.head=
+org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum.tail=
+org.eclipse.osbp.xtext.datamartdsl.SignedNumber=
+org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum=
+org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum.average=
+org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum.count=
+org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum.summation=
+org.eclipse.osbp.xtext.datamartdsl.TRANSLATABLEID=
+org.eclipse.osbp.xtext.datamartdsl.TRANSLATABLESTRING=
+org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum=
+org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum.Groups=
+org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum.Users=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.ActivationTime=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.ActualOwner=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.CreatedBy=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.CreatedOn=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.Description=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.ExpirationTime=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.Name=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.Priority=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.ProcessId=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.ProcessInstanceId=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.ProcessSessionId=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.Status=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.Subject=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum.TaskId=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum.BusinessAdministrator=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum.ExcludedOwner=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum.PotentialOwner=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum.Recipient=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum.TaskInitiator=
+org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum.TaskStakeholder=
+org.eclipse.osbp.xtext.datamartdsl.UnsignedNumber=
+org.eclipse.osbp.xtext.datamartdsl.ValidID=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group1=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group2=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group3=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group4=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group5=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group6=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group7=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group8=
+org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum.group9=
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/axis.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/axis.png
new file mode 100644
index 0000000..856a725
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/axis.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/column.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/column.png
new file mode 100644
index 0000000..ec3655c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/column.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/condition.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/condition.png
new file mode 100644
index 0000000..b5accba
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/condition.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamartentity.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamartentity.png
new file mode 100644
index 0000000..96ddae7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamartentity.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamartproperty.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamartproperty.png
new file mode 100644
index 0000000..25718ea
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamartproperty.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamarttype.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamarttype.png
new file mode 100644
index 0000000..ef742b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamarttype.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamarttypeentity.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamarttypeentity.png
new file mode 100644
index 0000000..974168f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/datamarttypeentity.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/define-derived-measure.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/define-derived-measure.png
new file mode 100644
index 0000000..2ea14bf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/define-derived-measure.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/definition.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/definition.png
new file mode 100644
index 0000000..3e28aba
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/definition.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/derived-measure.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/derived-measure.png
new file mode 100644
index 0000000..6cda845
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/derived-measure.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_cube.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_cube.png
new file mode 100644
index 0000000..3d578f2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_cube.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_datamart.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_datamart.png
new file mode 100644
index 0000000..2f20aee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_datamart.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_hierarchy.gif b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_hierarchy.gif
new file mode 100644
index 0000000..6d46246
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_hierarchy.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_import.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_import.png
new file mode 100644
index 0000000..f4fdcc9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/dsl_import.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/expression-conditional.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/expression-conditional.png
new file mode 100644
index 0000000..9d3e3de
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/expression-conditional.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/expression.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/expression.png
new file mode 100644
index 0000000..57fd2ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/expression.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-addition.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-addition.png
new file mode 100644
index 0000000..18a2924
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-addition.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-conjunction.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-conjunction.png
new file mode 100644
index 0000000..a580f18
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-conjunction.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-disjunction.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-disjunction.png
new file mode 100644
index 0000000..4c418d4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-disjunction.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-division.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-division.png
new file mode 100644
index 0000000..44679f8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-division.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-multiplication.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-multiplication.png
new file mode 100644
index 0000000..a65cfd0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-multiplication.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-subtraction.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-subtraction.png
new file mode 100644
index 0000000..6dff0e7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-3-subtraction.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-addition.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-addition.png
new file mode 100644
index 0000000..ce60be8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-addition.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-conjunction.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-conjunction.png
new file mode 100644
index 0000000..e247829
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-conjunction.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-disjunction.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-disjunction.png
new file mode 100644
index 0000000..1119cd9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-disjunction.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-division.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-division.png
new file mode 100644
index 0000000..160afa2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-division.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-multiplication-dot.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-multiplication-dot.png
new file mode 100644
index 0000000..8e26873
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-multiplication-dot.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-multiplication.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-multiplication.png
new file mode 100644
index 0000000..4ed2b60
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-multiplication.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-subtraction.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-subtraction.png
new file mode 100644
index 0000000..0666bd2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/math-subtraction.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure-defined.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure-defined.png
new file mode 100644
index 0000000..65a9c8a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure-defined.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure-derived.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure-derived.png
new file mode 100644
index 0000000..7f6e6b8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure-derived.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure.png
new file mode 100644
index 0000000..df657b3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/measure.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/member.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/member.png
new file mode 100644
index 0000000..f27b078
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/member.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/model.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/model.png
new file mode 100644
index 0000000..cffb857
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/model.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/order.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/order.png
new file mode 100644
index 0000000..a02e63c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/order.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/owner.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/owner.png
new file mode 100644
index 0000000..c6a04d2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/owner.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/package.gif b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/package.gif
new file mode 100644
index 0000000..34506fb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/package.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/reference.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/reference.png
new file mode 100644
index 0000000..fd899cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/reference.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/role.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/role.png
new file mode 100644
index 0000000..cdd8ddc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/role.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/slicer.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/slicer.png
new file mode 100644
index 0000000..eae0abd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/slicer.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/task.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/task.png
new file mode 100644
index 0000000..43e2960
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/task.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/icons/taskfilter.png b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/taskfilter.png
new file mode 100644
index 0000000..5688c16
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/icons/taskfilter.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/license.html b/org.eclipse.osbp.xtext.datamartdsl.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/plugin.xml b/org.eclipse.osbp.xtext.datamartdsl.ui/plugin.xml
new file mode 100644
index 0000000..9da3c62
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="datamart"
+              icon="icons/dsl_datamart.png"
+              id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+              name="OSBP DatamartDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            icon="icons/dsl_datamart.png"
+            name="OSBP DatamartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.coloring"
+            icon="icons/dsl_datamart.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.templates"
+            icon="icons/dsl_datamart.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              icon="icons/dsl_datamart.png"
+              id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+              name="OSBP DatamartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+            <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.datamartdsl.ui.keyword_DatamartDSL"
+            label="OSBP DatamartDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="datamart">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="datamart">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.eclipse.osbp.xtext.datamartdsl.DatamartDSL -->
+    <extension
+            id="datamartdsl.check.fast"
+            name="OSBP DatamartDSL Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="datamartdsl.check.normal"
+            name="OSBP DatamartDSL Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="datamartdsl.check.expensive"
+            name="OSBP DatamartDSL 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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compiler.preferencePage"
+            icon="icons/dsl_datamart.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+              class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+              id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compiler.propertyPage"
+              icon="icons/dsl_datamart.png"
+              name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+            <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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.datamartdsl.DatamartDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.datamartdsl.ui.datamartdsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.datamartdsl.ui.datamartdsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.datamartdsl.ui.datamartdsl.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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+	        class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.refactoring"
+            icon="icons/dsl_datamart.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="datamart">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="datamart" label="DatamartDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="datamart">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.datamartdsl.ui/plugin.xml_gen
new file mode 100644
index 0000000..6152a49
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="datamart"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            matchingStrategy="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="DatamartDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            name="DatamartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            name="DatamartDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+            <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.datamartdsl.ui.keyword_DatamartDSL"
+            label="DatamartDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="datamart">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="datamart">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.datamartdsl.DatamartDSL -->
+	<extension
+	        id="datamartdsl.check.fast"
+	        name="DatamartDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="datamartdsl.check.normal"
+	        name="DatamartDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="datamartdsl.check.expensive"
+	        name="DatamartDSL 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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="datamart"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+            <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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.datamartdsl.DatamartDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.datamartdsl.ui.datamartdsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.datamartdsl.ui.datamartdsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.datamartdsl.ui.datamartdsl.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.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL"
+	        class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.datamartdsl.ui.keyword_DatamartDSL"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory: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.datamartdsl.DatamartDSL" 
+                          id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.RulerContext"
+         id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.rulerContextMenu.toggleBreakpointAction">
+         </action>
+         <action
+            label="Not used"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.rulerContextMenu.enableDisableBreakpointAction">
+         </action>
+         <action
+           label="Breakpoint Properties"
+           helpContextId="breakpoint_properties_action_context"
+           class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+           menubarPath="group.properties"
+           id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.rulerContextMenu.openBreapointPropertiesAction">
+         </action>
+      </viewerContribution>
+   </extension>
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+   <!-- Open implementation -->
+   <extension point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+            commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+            <activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.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.datamartdsl.DatamartDSL.Editor.opened">
+              </reference>
+		</visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="datamart">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="datamart" label="DatamartDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.datamartdsl.DatamartDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="datamart">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/pom.xml b/org.eclipse.osbp.xtext.datamartdsl.ui/pom.xml
new file mode 100644
index 0000000..c3fd4fc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/pom.xml
@@ -0,0 +1,24 @@
+<?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.datamartdsl.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<parent>
+		<groupId>org.eclipse.osbp.xtext.datamartdsl</groupId>
+		<artifactId>org.eclipse.osbp.xtext.datamartdsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/AbstractDatamartDSLUiModule.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/AbstractDatamartDSLUiModule.java
new file mode 100644
index 0000000..ec3c2bd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/AbstractDatamartDSLUiModule.java
@@ -0,0 +1,374 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractDatamartDSLUiModule extends DefaultUiModule {
+	
+	public AbstractDatamartDSLUiModule(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.datamartdsl.parser.antlr.internal.InternalDatamartDSLLexer.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.datamartdsl.ui.labeling.DatamartDSLLabelProvider.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.datamartdsl.ui.labeling.DatamartDSLDescriptionLabelProvider.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.datamartdsl.ui.outline.DatamartDSLOutlineTreeProvider.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.datamartdsl.ui.outline.DatamartDSLOutlineTreeProvider.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.datamartdsl.ui.quickfix.DatamartDSLQuickfixProvider.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.datamartdsl.ui.contentassist.DatamartDSLProposalProvider.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.datamartdsl.ui.contentassist.antlr.DatamartDSLParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLLexer.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.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLLexer.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.datamartdsl.ui.contentassist.antlr.PartialDatamartDSLContentAssistParser.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLExecutableExtensionFactory.java
new file mode 100644
index 0000000..adbe43c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLExecutableExtensionFactory.java
@@ -0,0 +1,39 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.xtext.datamartdsl.ui.internal.DatamartDSLActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class DatamartDSLExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return DatamartDSLActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return DatamartDSLActivator.getInstance().getInjector(DatamartDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_DATAMARTDSL_DATAMARTDSL);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/AbstractDatamartDSLProposalProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/AbstractDatamartDSLProposalProvider.java
new file mode 100644
index 0000000..cb1aa76
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/AbstractDatamartDSLProposalProvider.java
@@ -0,0 +1,694 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 AbstractDatamartDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
+		
+	public void completeDatamartModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartPackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartPackage_Definitions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDefinition_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDefinition_Description(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartDefinition_DescriptionValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDefinition_Roles(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDefinition_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartRole_AssignedRole(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartTask_TaskQuery(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartTask_Columns(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartTask_Conditions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartColumn_ColumnRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartTaskFilter_FilterRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartCube_CubeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartCube_NonEmpty(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartCube_Axisslicer(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartReference_Ref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_EntityRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_Tracking(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartEntity_Navigations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_Conditions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_Ordering(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_FillerMinCountRows(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_FillerMaxCountRows(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartEntity_FillerDatas(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartOwner_JoinRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartOwner_DatamartEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMember_JoinRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMember_DatamartEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartProperty_PropertyRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartProperty_Aggregated(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartProperty_Aggregate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartProperty_Placed(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartProperty_Axis(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartProperty_Scaled(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartProperty_Scale(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartCondition_Condition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartOrder_OrderBy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartOrder_OrderHow(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDisjunction_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartConjunction_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartConditionalExpression_Operator(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartConditionalExpression_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartValue_NumberValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartValue_StringValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartValue_Filtered(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartValue_Optional(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartValue_Selected(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartDefineDerivedMeasure_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDefineDerivedMeasure_DerivedElement(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAddition_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMultiplication_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartNumberOrElement_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMemberTuple_Function(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMemberTuple_Hierarchy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMemberTuple_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartFunction_Function(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartParameterFunction_Function(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartParameterFunction_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartFunctionIntParameter_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetFunction_SetFunction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetParameterFunction_SetFunction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetParameterFunction_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetAggregationFunction_Aggregation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetAggregationFunction_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetTuple_SetFunction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetTuple_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAggregationFunction_Aggregation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAggregation_Aggregation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAggregation_Set(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAggregation_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetAggregation_Aggregation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetAggregation_Set(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSetAggregation_Right(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartSlicer_Element(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAxis_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartAxis_Elements(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDerivedMeasure_DerivedRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartDerivedMeasure_Scaled(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartDerivedMeasure_Scale(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMeasure_MeasureRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartMeasure_Scaled(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartMeasure_Scale(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartHierarchy_HierarchyRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartHierarchy_DefaultMember(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_AllMember(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_AllLevels(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_LevelRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartHierarchy_Filtered(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_Selected(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_All(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_Except(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_ExceptRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDatamartHierarchy_Ordered(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartHierarchy_OrderRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor);
+		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor);
+	}
+	public void completeDatamartHierarchy_Descending(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDatamartImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerData_PropertyRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerData_FillerType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerDateFuture_DateFutureYears(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerDatePast_DatePastYears(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerDateRange_DateBeginYears(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerDateRange_DateEndYears(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRange_BeginRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRange_BeginRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRange_EndRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRange_EndRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRange_Decimals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRange_Rounded(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedDoubleRandom_Items(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedIntegerRange_BeginRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedIntegerRange_BeginRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedIntegerRange_EndRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedIntegerRange_EndRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedIntegerRange_Rounded(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerSignedIntegerRandom_Items(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerTextRandom_Items(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerTextParagraphs_Count(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerTextSentences_Count(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerTextWords_Count(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRange_BeginRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRange_BeginRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRange_EndRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRange_EndRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRange_Decimals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRange_Rounded(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedDoubleRandom_Items(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedIntegerRange_BeginRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedIntegerRange_BeginRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedIntegerRange_EndRange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedIntegerRange_EndRangeRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedIntegerRange_Rounded(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePropertyFillerUnsignedIntegerRandom_Items(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_DatamartModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartDefinition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartRole(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSource(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartTask(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartColumn(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartTaskFilter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartCube(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartEntity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartNavigation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartOwner(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartMember(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartProperty(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartCondition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartOrder(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartDisjunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartConjunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartConditionalExpression(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartOperand(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartValue(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartCubeElement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartDefineDerivedMeasure(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartAddition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartMultiplication(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartPrimary(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartNumberOrElement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartMemberTuple(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartParameterFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartFunctionIntParameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSetFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSetParameterFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSetAggregationFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSetTuple(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartAggregationFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartAggregation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSetAggregation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartSlicer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartAxis(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartElement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartDerivedMeasure(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartMeasure(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartHierarchy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartImport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DatamartQualifiedNameWithWildCard(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_TRANSLATABLESTRING(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_AxisEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FunctionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ParameterFunctionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SetFunctionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SetParameterFunctionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SetAggregationEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_AggregationEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_OperatorEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SqlAggregationEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ValueScaleEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TaskQueryTopicEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TaskQueryColumnEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TaskFilterEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_OrderEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerData(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerDateFuture(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerDatePast(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerDateRange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerSignedDoubleRange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerSignedDoubleRandom(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerSignedIntegerRange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerSignedIntegerRandom(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerTextRandom(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerTextParagraphs(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerTextSentences(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerTextWords(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerUnsignedDoubleRange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerUnsignedDoubleRandom(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerUnsignedIntegerRange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PropertyFillerUnsignedIntegerRandom(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_UnsignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SINT(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/DatamartDSLParser.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/DatamartDSLParser.java
new file mode 100644
index 0000000..98c66f1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/DatamartDSLParser.java
@@ -0,0 +1,759 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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.datamartdsl.services.DatamartDSLGrammarAccess;
+
+public class DatamartDSLParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private DatamartDSLGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLParser createParser() {
+		org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLParser result = new org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLParser(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.getDatamartSourceAccess().getAlternatives(), "rule__DatamartSource__Alternatives");
+					put(grammarAccess.getDatamartNavigationAccess().getAlternatives(), "rule__DatamartNavigation__Alternatives");
+					put(grammarAccess.getDatamartOperandAccess().getAlternatives(), "rule__DatamartOperand__Alternatives");
+					put(grammarAccess.getDatamartValueAccess().getAlternatives(), "rule__DatamartValue__Alternatives");
+					put(grammarAccess.getDatamartValueAccess().getAlternatives_2(), "rule__DatamartValue__Alternatives_2");
+					put(grammarAccess.getDatamartCubeElementAccess().getAlternatives(), "rule__DatamartCubeElement__Alternatives");
+					put(grammarAccess.getDatamartAdditionAccess().getAlternatives_1_0(), "rule__DatamartAddition__Alternatives_1_0");
+					put(grammarAccess.getDatamartMultiplicationAccess().getAlternatives_1_0(), "rule__DatamartMultiplication__Alternatives_1_0");
+					put(grammarAccess.getDatamartPrimaryAccess().getAlternatives(), "rule__DatamartPrimary__Alternatives");
+					put(grammarAccess.getDatamartNumberOrElementAccess().getAlternatives(), "rule__DatamartNumberOrElement__Alternatives");
+					put(grammarAccess.getDatamartMemberTupleAccess().getAlternatives_0_0(), "rule__DatamartMemberTuple__Alternatives_0_0");
+					put(grammarAccess.getDatamartSetTupleAccess().getAlternatives_0(), "rule__DatamartSetTuple__Alternatives_0");
+					put(grammarAccess.getDatamartAggregationAccess().getAlternatives_2(), "rule__DatamartAggregation__Alternatives_2");
+					put(grammarAccess.getDatamartSetAggregationAccess().getAlternatives_2(), "rule__DatamartSetAggregation__Alternatives_2");
+					put(grammarAccess.getDatamartElementAccess().getAlternatives(), "rule__DatamartElement__Alternatives");
+					put(grammarAccess.getDatamartHierarchyAccess().getAlternatives_5_2(), "rule__DatamartHierarchy__Alternatives_5_2");
+					put(grammarAccess.getDatamartHierarchyAccess().getOrderRefAlternatives_6_2_1_0(), "rule__DatamartHierarchy__OrderRefAlternatives_6_2_1_0");
+					put(grammarAccess.getPropertyFillerTypeAccess().getAlternatives(), "rule__PropertyFillerType__Alternatives");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getAlternatives_1_0(), "rule__PropertyFillerSignedDoubleRange__Alternatives_1_0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getAlternatives_1_2(), "rule__PropertyFillerSignedDoubleRange__Alternatives_1_2");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getAlternatives_2_0(), "rule__PropertyFillerSignedIntegerRange__Alternatives_2_0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getAlternatives_2_2(), "rule__PropertyFillerSignedIntegerRange__Alternatives_2_2");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getAlternatives_1_0(), "rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getAlternatives_1_2(), "rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getAlternatives_2_0(), "rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getAlternatives_2_2(), "rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2");
+					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.getAxisEnumAccess().getAlternatives(), "rule__AxisEnum__Alternatives");
+					put(grammarAccess.getFunctionEnumAccess().getAlternatives(), "rule__FunctionEnum__Alternatives");
+					put(grammarAccess.getParameterFunctionEnumAccess().getAlternatives(), "rule__ParameterFunctionEnum__Alternatives");
+					put(grammarAccess.getSetFunctionEnumAccess().getAlternatives(), "rule__SetFunctionEnum__Alternatives");
+					put(grammarAccess.getSetParameterFunctionEnumAccess().getAlternatives(), "rule__SetParameterFunctionEnum__Alternatives");
+					put(grammarAccess.getSetAggregationEnumAccess().getAlternatives(), "rule__SetAggregationEnum__Alternatives");
+					put(grammarAccess.getAggregationEnumAccess().getAlternatives(), "rule__AggregationEnum__Alternatives");
+					put(grammarAccess.getOperatorEnumAccess().getAlternatives(), "rule__OperatorEnum__Alternatives");
+					put(grammarAccess.getSqlAggregationEnumAccess().getAlternatives(), "rule__SqlAggregationEnum__Alternatives");
+					put(grammarAccess.getValueScaleEnumAccess().getAlternatives(), "rule__ValueScaleEnum__Alternatives");
+					put(grammarAccess.getTaskQueryTopicEnumAccess().getAlternatives(), "rule__TaskQueryTopicEnum__Alternatives");
+					put(grammarAccess.getTaskQueryColumnEnumAccess().getAlternatives(), "rule__TaskQueryColumnEnum__Alternatives");
+					put(grammarAccess.getTaskFilterEnumAccess().getAlternatives(), "rule__TaskFilterEnum__Alternatives");
+					put(grammarAccess.getOrderEnumAccess().getAlternatives(), "rule__OrderEnum__Alternatives");
+					put(grammarAccess.getDatamartPackageAccess().getGroup(), "rule__DatamartPackage__Group__0");
+					put(grammarAccess.getDatamartPackageAccess().getGroup_3(), "rule__DatamartPackage__Group_3__0");
+					put(grammarAccess.getDatamartDefinitionAccess().getGroup(), "rule__DatamartDefinition__Group__0");
+					put(grammarAccess.getDatamartDefinitionAccess().getGroup_2(), "rule__DatamartDefinition__Group_2__0");
+					put(grammarAccess.getDatamartDefinitionAccess().getGroup_3(), "rule__DatamartDefinition__Group_3__0");
+					put(grammarAccess.getDatamartRoleAccess().getGroup(), "rule__DatamartRole__Group__0");
+					put(grammarAccess.getDatamartTaskAccess().getGroup(), "rule__DatamartTask__Group__0");
+					put(grammarAccess.getDatamartTaskAccess().getGroup_2(), "rule__DatamartTask__Group_2__0");
+					put(grammarAccess.getDatamartTaskAccess().getGroup_3(), "rule__DatamartTask__Group_3__0");
+					put(grammarAccess.getDatamartColumnAccess().getGroup(), "rule__DatamartColumn__Group__0");
+					put(grammarAccess.getDatamartTaskFilterAccess().getGroup(), "rule__DatamartTaskFilter__Group__0");
+					put(grammarAccess.getDatamartCubeAccess().getGroup(), "rule__DatamartCube__Group__0");
+					put(grammarAccess.getDatamartReferenceAccess().getGroup(), "rule__DatamartReference__Group__0");
+					put(grammarAccess.getDatamartEntityAccess().getGroup(), "rule__DatamartEntity__Group__0");
+					put(grammarAccess.getDatamartEntityAccess().getGroup_4(), "rule__DatamartEntity__Group_4__0");
+					put(grammarAccess.getDatamartEntityAccess().getGroup_5(), "rule__DatamartEntity__Group_5__0");
+					put(grammarAccess.getDatamartEntityAccess().getGroup_6(), "rule__DatamartEntity__Group_6__0");
+					put(grammarAccess.getDatamartEntityAccess().getGroup_7(), "rule__DatamartEntity__Group_7__0");
+					put(grammarAccess.getDatamartEntityAccess().getGroup_8(), "rule__DatamartEntity__Group_8__0");
+					put(grammarAccess.getDatamartOwnerAccess().getGroup(), "rule__DatamartOwner__Group__0");
+					put(grammarAccess.getDatamartMemberAccess().getGroup(), "rule__DatamartMember__Group__0");
+					put(grammarAccess.getDatamartPropertyAccess().getGroup(), "rule__DatamartProperty__Group__0");
+					put(grammarAccess.getDatamartPropertyAccess().getGroup_2_0(), "rule__DatamartProperty__Group_2_0__0");
+					put(grammarAccess.getDatamartPropertyAccess().getGroup_2_1(), "rule__DatamartProperty__Group_2_1__0");
+					put(grammarAccess.getDatamartPropertyAccess().getGroup_2_2(), "rule__DatamartProperty__Group_2_2__0");
+					put(grammarAccess.getDatamartConditionAccess().getGroup(), "rule__DatamartCondition__Group__0");
+					put(grammarAccess.getDatamartOrderAccess().getGroup(), "rule__DatamartOrder__Group__0");
+					put(grammarAccess.getDatamartDisjunctionAccess().getGroup(), "rule__DatamartDisjunction__Group__0");
+					put(grammarAccess.getDatamartDisjunctionAccess().getGroup_1(), "rule__DatamartDisjunction__Group_1__0");
+					put(grammarAccess.getDatamartDisjunctionAccess().getGroup_1_0(), "rule__DatamartDisjunction__Group_1_0__0");
+					put(grammarAccess.getDatamartConjunctionAccess().getGroup(), "rule__DatamartConjunction__Group__0");
+					put(grammarAccess.getDatamartConjunctionAccess().getGroup_1(), "rule__DatamartConjunction__Group_1__0");
+					put(grammarAccess.getDatamartConjunctionAccess().getGroup_1_0(), "rule__DatamartConjunction__Group_1_0__0");
+					put(grammarAccess.getDatamartConditionalExpressionAccess().getGroup(), "rule__DatamartConditionalExpression__Group__0");
+					put(grammarAccess.getDatamartConditionalExpressionAccess().getGroup_1(), "rule__DatamartConditionalExpression__Group_1__0");
+					put(grammarAccess.getDatamartConditionalExpressionAccess().getGroup_1_0(), "rule__DatamartConditionalExpression__Group_1_0__0");
+					put(grammarAccess.getDatamartOperandAccess().getGroup_1(), "rule__DatamartOperand__Group_1__0");
+					put(grammarAccess.getDatamartValueAccess().getGroup_2_0(), "rule__DatamartValue__Group_2_0__0");
+					put(grammarAccess.getDatamartDefineDerivedMeasureAccess().getGroup(), "rule__DatamartDefineDerivedMeasure__Group__0");
+					put(grammarAccess.getDatamartAdditionAccess().getGroup(), "rule__DatamartAddition__Group__0");
+					put(grammarAccess.getDatamartAdditionAccess().getGroup_1(), "rule__DatamartAddition__Group_1__0");
+					put(grammarAccess.getDatamartAdditionAccess().getGroup_1_0_0(), "rule__DatamartAddition__Group_1_0_0__0");
+					put(grammarAccess.getDatamartAdditionAccess().getGroup_1_0_1(), "rule__DatamartAddition__Group_1_0_1__0");
+					put(grammarAccess.getDatamartMultiplicationAccess().getGroup(), "rule__DatamartMultiplication__Group__0");
+					put(grammarAccess.getDatamartMultiplicationAccess().getGroup_1(), "rule__DatamartMultiplication__Group_1__0");
+					put(grammarAccess.getDatamartMultiplicationAccess().getGroup_1_0_0(), "rule__DatamartMultiplication__Group_1_0_0__0");
+					put(grammarAccess.getDatamartMultiplicationAccess().getGroup_1_0_1(), "rule__DatamartMultiplication__Group_1_0_1__0");
+					put(grammarAccess.getDatamartPrimaryAccess().getGroup_1(), "rule__DatamartPrimary__Group_1__0");
+					put(grammarAccess.getDatamartMemberTupleAccess().getGroup(), "rule__DatamartMemberTuple__Group__0");
+					put(grammarAccess.getDatamartMemberTupleAccess().getGroup_0(), "rule__DatamartMemberTuple__Group_0__0");
+					put(grammarAccess.getDatamartMemberTupleAccess().getGroup_2(), "rule__DatamartMemberTuple__Group_2__0");
+					put(grammarAccess.getDatamartParameterFunctionAccess().getGroup(), "rule__DatamartParameterFunction__Group__0");
+					put(grammarAccess.getDatamartSetParameterFunctionAccess().getGroup(), "rule__DatamartSetParameterFunction__Group__0");
+					put(grammarAccess.getDatamartSetAggregationFunctionAccess().getGroup(), "rule__DatamartSetAggregationFunction__Group__0");
+					put(grammarAccess.getDatamartSetTupleAccess().getGroup(), "rule__DatamartSetTuple__Group__0");
+					put(grammarAccess.getDatamartSetTupleAccess().getGroup_1(), "rule__DatamartSetTuple__Group_1__0");
+					put(grammarAccess.getDatamartAggregationAccess().getGroup(), "rule__DatamartAggregation__Group__0");
+					put(grammarAccess.getDatamartAggregationAccess().getGroup_3(), "rule__DatamartAggregation__Group_3__0");
+					put(grammarAccess.getDatamartSetAggregationAccess().getGroup(), "rule__DatamartSetAggregation__Group__0");
+					put(grammarAccess.getDatamartSetAggregationAccess().getGroup_3(), "rule__DatamartSetAggregation__Group_3__0");
+					put(grammarAccess.getDatamartSlicerAccess().getGroup(), "rule__DatamartSlicer__Group__0");
+					put(grammarAccess.getDatamartAxisAccess().getGroup(), "rule__DatamartAxis__Group__0");
+					put(grammarAccess.getDatamartDerivedMeasureAccess().getGroup(), "rule__DatamartDerivedMeasure__Group__0");
+					put(grammarAccess.getDatamartDerivedMeasureAccess().getGroup_2(), "rule__DatamartDerivedMeasure__Group_2__0");
+					put(grammarAccess.getDatamartMeasureAccess().getGroup(), "rule__DatamartMeasure__Group__0");
+					put(grammarAccess.getDatamartMeasureAccess().getGroup_2(), "rule__DatamartMeasure__Group_2__0");
+					put(grammarAccess.getDatamartHierarchyAccess().getGroup(), "rule__DatamartHierarchy__Group__0");
+					put(grammarAccess.getDatamartHierarchyAccess().getGroup_5(), "rule__DatamartHierarchy__Group_5__0");
+					put(grammarAccess.getDatamartHierarchyAccess().getGroup_6(), "rule__DatamartHierarchy__Group_6__0");
+					put(grammarAccess.getDatamartHierarchyAccess().getGroup_6_1(), "rule__DatamartHierarchy__Group_6_1__0");
+					put(grammarAccess.getDatamartHierarchyAccess().getGroup_6_2(), "rule__DatamartHierarchy__Group_6_2__0");
+					put(grammarAccess.getDatamartImportAccess().getGroup(), "rule__DatamartImport__Group__0");
+					put(grammarAccess.getDatamartQualifiedNameWithWildCardAccess().getGroup(), "rule__DatamartQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getDatamartQualifiedNameWithWildCardAccess().getGroup_1(), "rule__DatamartQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getPropertyFillerDataAccess().getGroup(), "rule__PropertyFillerData__Group__0");
+					put(grammarAccess.getPropertyFillerDateFutureAccess().getGroup(), "rule__PropertyFillerDateFuture__Group__0");
+					put(grammarAccess.getPropertyFillerDatePastAccess().getGroup(), "rule__PropertyFillerDatePast__Group__0");
+					put(grammarAccess.getPropertyFillerDateRangeAccess().getGroup(), "rule__PropertyFillerDateRange__Group__0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup(), "rule__PropertyFillerSignedDoubleRange__Group__0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup_1(), "rule__PropertyFillerSignedDoubleRange__Group_1__0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup_5(), "rule__PropertyFillerSignedDoubleRange__Group_5__0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getGroup(), "rule__PropertyFillerSignedDoubleRandom__Group__0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup(), "rule__PropertyFillerSignedIntegerRange__Group__0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup_2(), "rule__PropertyFillerSignedIntegerRange__Group_2__0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup_3(), "rule__PropertyFillerSignedIntegerRange__Group_3__0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getGroup(), "rule__PropertyFillerSignedIntegerRandom__Group__0");
+					put(grammarAccess.getPropertyFillerTextRandomAccess().getGroup(), "rule__PropertyFillerTextRandom__Group__0");
+					put(grammarAccess.getPropertyFillerTextParagraphsAccess().getGroup(), "rule__PropertyFillerTextParagraphs__Group__0");
+					put(grammarAccess.getPropertyFillerTextSentencesAccess().getGroup(), "rule__PropertyFillerTextSentences__Group__0");
+					put(grammarAccess.getPropertyFillerTextWordsAccess().getGroup(), "rule__PropertyFillerTextWords__Group__0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup(), "rule__PropertyFillerUnsignedDoubleRange__Group__0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup_1(), "rule__PropertyFillerUnsignedDoubleRange__Group_1__0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup_5(), "rule__PropertyFillerUnsignedDoubleRange__Group_5__0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getGroup(), "rule__PropertyFillerUnsignedDoubleRandom__Group__0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup(), "rule__PropertyFillerUnsignedIntegerRange__Group__0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup_2(), "rule__PropertyFillerUnsignedIntegerRange__Group_2__0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup_3(), "rule__PropertyFillerUnsignedIntegerRange__Group_3__0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getGroup(), "rule__PropertyFillerUnsignedIntegerRandom__Group__0");
+					put(grammarAccess.getSignedNumberAccess().getGroup(), "rule__SignedNumber__Group__0");
+					put(grammarAccess.getUnsignedNumberAccess().getGroup(), "rule__UnsignedNumber__Group__0");
+					put(grammarAccess.getUnsignedNumberAccess().getGroup_1(), "rule__UnsignedNumber__Group_1__0");
+					put(grammarAccess.getSINTAccess().getGroup(), "rule__SINT__Group__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.getDatamartModelAccess().getPackagesAssignment(), "rule__DatamartModel__PackagesAssignment");
+					put(grammarAccess.getDatamartPackageAccess().getNameAssignment_2(), "rule__DatamartPackage__NameAssignment_2");
+					put(grammarAccess.getDatamartPackageAccess().getImportsAssignment_3_1(), "rule__DatamartPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getDatamartPackageAccess().getDefinitionsAssignment_3_2(), "rule__DatamartPackage__DefinitionsAssignment_3_2");
+					put(grammarAccess.getDatamartDefinitionAccess().getNameAssignment_1(), "rule__DatamartDefinition__NameAssignment_1");
+					put(grammarAccess.getDatamartDefinitionAccess().getDescriptionAssignment_2_0(), "rule__DatamartDefinition__DescriptionAssignment_2_0");
+					put(grammarAccess.getDatamartDefinitionAccess().getDescriptionValueAssignment_2_1(), "rule__DatamartDefinition__DescriptionValueAssignment_2_1");
+					put(grammarAccess.getDatamartDefinitionAccess().getRolesAssignment_3_2(), "rule__DatamartDefinition__RolesAssignment_3_2");
+					put(grammarAccess.getDatamartDefinitionAccess().getSourceAssignment_5(), "rule__DatamartDefinition__SourceAssignment_5");
+					put(grammarAccess.getDatamartRoleAccess().getAssignedRoleAssignment_1(), "rule__DatamartRole__AssignedRoleAssignment_1");
+					put(grammarAccess.getDatamartTaskAccess().getTaskQueryAssignment_1(), "rule__DatamartTask__TaskQueryAssignment_1");
+					put(grammarAccess.getDatamartTaskAccess().getColumnsAssignment_2_2(), "rule__DatamartTask__ColumnsAssignment_2_2");
+					put(grammarAccess.getDatamartTaskAccess().getConditionsAssignment_3_2(), "rule__DatamartTask__ConditionsAssignment_3_2");
+					put(grammarAccess.getDatamartColumnAccess().getColumnRefAssignment_1(), "rule__DatamartColumn__ColumnRefAssignment_1");
+					put(grammarAccess.getDatamartTaskFilterAccess().getFilterRefAssignment_1(), "rule__DatamartTaskFilter__FilterRefAssignment_1");
+					put(grammarAccess.getDatamartCubeAccess().getCubeRefAssignment_1(), "rule__DatamartCube__CubeRefAssignment_1");
+					put(grammarAccess.getDatamartCubeAccess().getNonEmptyAssignment_2(), "rule__DatamartCube__NonEmptyAssignment_2");
+					put(grammarAccess.getDatamartCubeAccess().getAxisslicerAssignment_4(), "rule__DatamartCube__AxisslicerAssignment_4");
+					put(grammarAccess.getDatamartReferenceAccess().getRefAssignment_1(), "rule__DatamartReference__RefAssignment_1");
+					put(grammarAccess.getDatamartEntityAccess().getEntityRefAssignment_1(), "rule__DatamartEntity__EntityRefAssignment_1");
+					put(grammarAccess.getDatamartEntityAccess().getTrackingAssignment_2(), "rule__DatamartEntity__TrackingAssignment_2");
+					put(grammarAccess.getDatamartEntityAccess().getNavigationsAssignment_4_2(), "rule__DatamartEntity__NavigationsAssignment_4_2");
+					put(grammarAccess.getDatamartEntityAccess().getPropertiesAssignment_5_2(), "rule__DatamartEntity__PropertiesAssignment_5_2");
+					put(grammarAccess.getDatamartEntityAccess().getConditionsAssignment_6_2(), "rule__DatamartEntity__ConditionsAssignment_6_2");
+					put(grammarAccess.getDatamartEntityAccess().getOrderingAssignment_7_2(), "rule__DatamartEntity__OrderingAssignment_7_2");
+					put(grammarAccess.getDatamartEntityAccess().getFillerMinCountRowsAssignment_8_1(), "rule__DatamartEntity__FillerMinCountRowsAssignment_8_1");
+					put(grammarAccess.getDatamartEntityAccess().getFillerMaxCountRowsAssignment_8_3(), "rule__DatamartEntity__FillerMaxCountRowsAssignment_8_3");
+					put(grammarAccess.getDatamartEntityAccess().getFillerDatasAssignment_8_5(), "rule__DatamartEntity__FillerDatasAssignment_8_5");
+					put(grammarAccess.getDatamartOwnerAccess().getJoinRefAssignment_1(), "rule__DatamartOwner__JoinRefAssignment_1");
+					put(grammarAccess.getDatamartOwnerAccess().getDatamartEntityAssignment_3(), "rule__DatamartOwner__DatamartEntityAssignment_3");
+					put(grammarAccess.getDatamartMemberAccess().getJoinRefAssignment_1(), "rule__DatamartMember__JoinRefAssignment_1");
+					put(grammarAccess.getDatamartMemberAccess().getDatamartEntityAssignment_3(), "rule__DatamartMember__DatamartEntityAssignment_3");
+					put(grammarAccess.getDatamartPropertyAccess().getPropertyRefAssignment_1(), "rule__DatamartProperty__PropertyRefAssignment_1");
+					put(grammarAccess.getDatamartPropertyAccess().getAggregatedAssignment_2_0_0(), "rule__DatamartProperty__AggregatedAssignment_2_0_0");
+					put(grammarAccess.getDatamartPropertyAccess().getAggregateAssignment_2_0_1(), "rule__DatamartProperty__AggregateAssignment_2_0_1");
+					put(grammarAccess.getDatamartPropertyAccess().getPlacedAssignment_2_1_0(), "rule__DatamartProperty__PlacedAssignment_2_1_0");
+					put(grammarAccess.getDatamartPropertyAccess().getAxisAssignment_2_1_1(), "rule__DatamartProperty__AxisAssignment_2_1_1");
+					put(grammarAccess.getDatamartPropertyAccess().getScaledAssignment_2_2_0(), "rule__DatamartProperty__ScaledAssignment_2_2_0");
+					put(grammarAccess.getDatamartPropertyAccess().getScaleAssignment_2_2_1(), "rule__DatamartProperty__ScaleAssignment_2_2_1");
+					put(grammarAccess.getDatamartConditionAccess().getConditionAssignment_1(), "rule__DatamartCondition__ConditionAssignment_1");
+					put(grammarAccess.getDatamartOrderAccess().getOrderByAssignment_1(), "rule__DatamartOrder__OrderByAssignment_1");
+					put(grammarAccess.getDatamartOrderAccess().getOrderHowAssignment_2(), "rule__DatamartOrder__OrderHowAssignment_2");
+					put(grammarAccess.getDatamartDisjunctionAccess().getRightAssignment_1_1(), "rule__DatamartDisjunction__RightAssignment_1_1");
+					put(grammarAccess.getDatamartConjunctionAccess().getRightAssignment_1_1(), "rule__DatamartConjunction__RightAssignment_1_1");
+					put(grammarAccess.getDatamartConditionalExpressionAccess().getOperatorAssignment_1_0_1(), "rule__DatamartConditionalExpression__OperatorAssignment_1_0_1");
+					put(grammarAccess.getDatamartConditionalExpressionAccess().getRightAssignment_1_1(), "rule__DatamartConditionalExpression__RightAssignment_1_1");
+					put(grammarAccess.getDatamartValueAccess().getNumberValueAssignment_0(), "rule__DatamartValue__NumberValueAssignment_0");
+					put(grammarAccess.getDatamartValueAccess().getStringValueAssignment_1(), "rule__DatamartValue__StringValueAssignment_1");
+					put(grammarAccess.getDatamartValueAccess().getFilteredAssignment_2_0_0(), "rule__DatamartValue__FilteredAssignment_2_0_0");
+					put(grammarAccess.getDatamartValueAccess().getOptionalAssignment_2_0_1(), "rule__DatamartValue__OptionalAssignment_2_0_1");
+					put(grammarAccess.getDatamartValueAccess().getSelectedAssignment_2_1(), "rule__DatamartValue__SelectedAssignment_2_1");
+					put(grammarAccess.getDatamartDefineDerivedMeasureAccess().getNameAssignment_1(), "rule__DatamartDefineDerivedMeasure__NameAssignment_1");
+					put(grammarAccess.getDatamartDefineDerivedMeasureAccess().getDerivedElementAssignment_3(), "rule__DatamartDefineDerivedMeasure__DerivedElementAssignment_3");
+					put(grammarAccess.getDatamartAdditionAccess().getRightAssignment_1_1(), "rule__DatamartAddition__RightAssignment_1_1");
+					put(grammarAccess.getDatamartMultiplicationAccess().getRightAssignment_1_1(), "rule__DatamartMultiplication__RightAssignment_1_1");
+					put(grammarAccess.getDatamartNumberOrElementAccess().getValueAssignment_0(), "rule__DatamartNumberOrElement__ValueAssignment_0");
+					put(grammarAccess.getDatamartMemberTupleAccess().getFunctionAssignment_0_0_0(), "rule__DatamartMemberTuple__FunctionAssignment_0_0_0");
+					put(grammarAccess.getDatamartMemberTupleAccess().getFunctionAssignment_0_0_1(), "rule__DatamartMemberTuple__FunctionAssignment_0_0_1");
+					put(grammarAccess.getDatamartMemberTupleAccess().getHierarchyAssignment_1(), "rule__DatamartMemberTuple__HierarchyAssignment_1");
+					put(grammarAccess.getDatamartMemberTupleAccess().getRightAssignment_2_2(), "rule__DatamartMemberTuple__RightAssignment_2_2");
+					put(grammarAccess.getDatamartFunctionAccess().getFunctionAssignment(), "rule__DatamartFunction__FunctionAssignment");
+					put(grammarAccess.getDatamartParameterFunctionAccess().getFunctionAssignment_0(), "rule__DatamartParameterFunction__FunctionAssignment_0");
+					put(grammarAccess.getDatamartParameterFunctionAccess().getParameterAssignment_2(), "rule__DatamartParameterFunction__ParameterAssignment_2");
+					put(grammarAccess.getDatamartFunctionIntParameterAccess().getValueAssignment(), "rule__DatamartFunctionIntParameter__ValueAssignment");
+					put(grammarAccess.getDatamartSetFunctionAccess().getSetFunctionAssignment(), "rule__DatamartSetFunction__SetFunctionAssignment");
+					put(grammarAccess.getDatamartSetParameterFunctionAccess().getSetFunctionAssignment_0(), "rule__DatamartSetParameterFunction__SetFunctionAssignment_0");
+					put(grammarAccess.getDatamartSetParameterFunctionAccess().getParameterAssignment_2(), "rule__DatamartSetParameterFunction__ParameterAssignment_2");
+					put(grammarAccess.getDatamartSetAggregationFunctionAccess().getAggregationAssignment_0(), "rule__DatamartSetAggregationFunction__AggregationAssignment_0");
+					put(grammarAccess.getDatamartSetAggregationFunctionAccess().getParameterAssignment_2(), "rule__DatamartSetAggregationFunction__ParameterAssignment_2");
+					put(grammarAccess.getDatamartSetTupleAccess().getSetFunctionAssignment_0_0(), "rule__DatamartSetTuple__SetFunctionAssignment_0_0");
+					put(grammarAccess.getDatamartSetTupleAccess().getSetFunctionAssignment_0_1(), "rule__DatamartSetTuple__SetFunctionAssignment_0_1");
+					put(grammarAccess.getDatamartSetTupleAccess().getRightAssignment_1_2(), "rule__DatamartSetTuple__RightAssignment_1_2");
+					put(grammarAccess.getDatamartAggregationFunctionAccess().getAggregationAssignment(), "rule__DatamartAggregationFunction__AggregationAssignment");
+					put(grammarAccess.getDatamartAggregationAccess().getAggregationAssignment_0(), "rule__DatamartAggregation__AggregationAssignment_0");
+					put(grammarAccess.getDatamartAggregationAccess().getSetAssignment_2_0(), "rule__DatamartAggregation__SetAssignment_2_0");
+					put(grammarAccess.getDatamartAggregationAccess().getSetAssignment_2_1(), "rule__DatamartAggregation__SetAssignment_2_1");
+					put(grammarAccess.getDatamartAggregationAccess().getRightAssignment_3_2(), "rule__DatamartAggregation__RightAssignment_3_2");
+					put(grammarAccess.getDatamartSetAggregationAccess().getAggregationAssignment_0(), "rule__DatamartSetAggregation__AggregationAssignment_0");
+					put(grammarAccess.getDatamartSetAggregationAccess().getSetAssignment_2_0(), "rule__DatamartSetAggregation__SetAssignment_2_0");
+					put(grammarAccess.getDatamartSetAggregationAccess().getSetAssignment_2_1(), "rule__DatamartSetAggregation__SetAssignment_2_1");
+					put(grammarAccess.getDatamartSetAggregationAccess().getRightAssignment_3_2(), "rule__DatamartSetAggregation__RightAssignment_3_2");
+					put(grammarAccess.getDatamartSlicerAccess().getElementAssignment_1(), "rule__DatamartSlicer__ElementAssignment_1");
+					put(grammarAccess.getDatamartAxisAccess().getNameAssignment_1(), "rule__DatamartAxis__NameAssignment_1");
+					put(grammarAccess.getDatamartAxisAccess().getElementsAssignment_3(), "rule__DatamartAxis__ElementsAssignment_3");
+					put(grammarAccess.getDatamartDerivedMeasureAccess().getDerivedRefAssignment_1(), "rule__DatamartDerivedMeasure__DerivedRefAssignment_1");
+					put(grammarAccess.getDatamartDerivedMeasureAccess().getScaledAssignment_2_0(), "rule__DatamartDerivedMeasure__ScaledAssignment_2_0");
+					put(grammarAccess.getDatamartDerivedMeasureAccess().getScaleAssignment_2_1(), "rule__DatamartDerivedMeasure__ScaleAssignment_2_1");
+					put(grammarAccess.getDatamartMeasureAccess().getMeasureRefAssignment_1(), "rule__DatamartMeasure__MeasureRefAssignment_1");
+					put(grammarAccess.getDatamartMeasureAccess().getScaledAssignment_2_0(), "rule__DatamartMeasure__ScaledAssignment_2_0");
+					put(grammarAccess.getDatamartMeasureAccess().getScaleAssignment_2_1(), "rule__DatamartMeasure__ScaleAssignment_2_1");
+					put(grammarAccess.getDatamartHierarchyAccess().getHierarchyRefAssignment_1(), "rule__DatamartHierarchy__HierarchyRefAssignment_1");
+					put(grammarAccess.getDatamartHierarchyAccess().getDefaultMemberAssignment_2(), "rule__DatamartHierarchy__DefaultMemberAssignment_2");
+					put(grammarAccess.getDatamartHierarchyAccess().getAllMemberAssignment_3(), "rule__DatamartHierarchy__AllMemberAssignment_3");
+					put(grammarAccess.getDatamartHierarchyAccess().getAllLevelsAssignment_4(), "rule__DatamartHierarchy__AllLevelsAssignment_4");
+					put(grammarAccess.getDatamartHierarchyAccess().getLevelRefAssignment_5_1(), "rule__DatamartHierarchy__LevelRefAssignment_5_1");
+					put(grammarAccess.getDatamartHierarchyAccess().getFilteredAssignment_5_2_0(), "rule__DatamartHierarchy__FilteredAssignment_5_2_0");
+					put(grammarAccess.getDatamartHierarchyAccess().getSelectedAssignment_5_2_1(), "rule__DatamartHierarchy__SelectedAssignment_5_2_1");
+					put(grammarAccess.getDatamartHierarchyAccess().getAllAssignment_6_0(), "rule__DatamartHierarchy__AllAssignment_6_0");
+					put(grammarAccess.getDatamartHierarchyAccess().getExceptAssignment_6_1_0(), "rule__DatamartHierarchy__ExceptAssignment_6_1_0");
+					put(grammarAccess.getDatamartHierarchyAccess().getExceptRefAssignment_6_1_1(), "rule__DatamartHierarchy__ExceptRefAssignment_6_1_1");
+					put(grammarAccess.getDatamartHierarchyAccess().getOrderedAssignment_6_2_0(), "rule__DatamartHierarchy__OrderedAssignment_6_2_0");
+					put(grammarAccess.getDatamartHierarchyAccess().getOrderRefAssignment_6_2_1(), "rule__DatamartHierarchy__OrderRefAssignment_6_2_1");
+					put(grammarAccess.getDatamartHierarchyAccess().getDescendingAssignment_6_2_2(), "rule__DatamartHierarchy__DescendingAssignment_6_2_2");
+					put(grammarAccess.getDatamartImportAccess().getImportedNamespaceAssignment_1(), "rule__DatamartImport__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getPropertyFillerDataAccess().getPropertyRefAssignment_1(), "rule__PropertyFillerData__PropertyRefAssignment_1");
+					put(grammarAccess.getPropertyFillerDataAccess().getFillerTypeAssignment_3(), "rule__PropertyFillerData__FillerTypeAssignment_3");
+					put(grammarAccess.getPropertyFillerDateFutureAccess().getDateFutureYearsAssignment_1(), "rule__PropertyFillerDateFuture__DateFutureYearsAssignment_1");
+					put(grammarAccess.getPropertyFillerDatePastAccess().getDatePastYearsAssignment_1(), "rule__PropertyFillerDatePast__DatePastYearsAssignment_1");
+					put(grammarAccess.getPropertyFillerDateRangeAccess().getDateBeginYearsAssignment_1(), "rule__PropertyFillerDateRange__DateBeginYearsAssignment_1");
+					put(grammarAccess.getPropertyFillerDateRangeAccess().getDateEndYearsAssignment_3(), "rule__PropertyFillerDateRange__DateEndYearsAssignment_3");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0(), "rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1(), "rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeAssignment_1_2_0(), "rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1(), "rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getDecimalsAssignment_3(), "rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_3");
+					put(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getRoundedAssignment_5_1(), "rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_1");
+					put(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0(), "rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1(), "rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeAssignment_2_2_0(), "rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1(), "rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1");
+					put(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getRoundedAssignment_3_1(), "rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_1");
+					put(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2");
+					put(grammarAccess.getPropertyFillerTextRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerTextRandom__ItemsAssignment_2");
+					put(grammarAccess.getPropertyFillerTextParagraphsAccess().getCountAssignment_2(), "rule__PropertyFillerTextParagraphs__CountAssignment_2");
+					put(grammarAccess.getPropertyFillerTextSentencesAccess().getCountAssignment_2(), "rule__PropertyFillerTextSentences__CountAssignment_2");
+					put(grammarAccess.getPropertyFillerTextWordsAccess().getCountAssignment_2(), "rule__PropertyFillerTextWords__CountAssignment_2");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0(), "rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1(), "rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeAssignment_1_2_0(), "rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1(), "rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getDecimalsAssignment_3(), "rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_3");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getRoundedAssignment_5_1(), "rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_1");
+					put(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0(), "rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1(), "rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeAssignment_2_2_0(), "rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1(), "rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getRoundedAssignment_3_1(), "rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_1");
+					put(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getItemsAssignment_2(), "rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2");
+					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");
+					put(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), "rule__DatamartProperty__UnorderedGroup_2");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLParser typedParser = (org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.antlr.internal.InternalDatamartDSLParser) parser;
+			typedParser.entryRuleDatamartModel();
+			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 DatamartDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DatamartDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/PartialDatamartDSLContentAssistParser.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/PartialDatamartDSLContentAssistParser.java
new file mode 100644
index 0000000..91bd431
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/PartialDatamartDSLContentAssistParser.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.datamartdsl.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 PartialDatamartDSLContentAssistParser extends DatamartDSLParser 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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g
new file mode 100644
index 0000000..0fa3867
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  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 InternalDatamartDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.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.datamartdsl.services.DatamartDSLGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private DatamartDSLGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(DatamartDSLGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleDatamartModel
+entryRuleDatamartModel 
+:
+{ before(grammarAccess.getDatamartModelRule()); }
+	 ruleDatamartModel
+{ after(grammarAccess.getDatamartModelRule()); } 
+	 EOF 
+;
+
+// Rule DatamartModel
+ruleDatamartModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartModelAccess().getPackagesAssignment()); }
+(rule__DatamartModel__PackagesAssignment)*
+{ after(grammarAccess.getDatamartModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartPackage
+entryRuleDatamartPackage 
+:
+{ before(grammarAccess.getDatamartPackageRule()); }
+	 ruleDatamartPackage
+{ after(grammarAccess.getDatamartPackageRule()); } 
+	 EOF 
+;
+
+// Rule DatamartPackage
+ruleDatamartPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getGroup()); }
+(rule__DatamartPackage__Group__0)
+{ after(grammarAccess.getDatamartPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartDefinition
+entryRuleDatamartDefinition 
+:
+{ before(grammarAccess.getDatamartDefinitionRule()); }
+	 ruleDatamartDefinition
+{ after(grammarAccess.getDatamartDefinitionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartDefinition
+ruleDatamartDefinition
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getGroup()); }
+(rule__DatamartDefinition__Group__0)
+{ after(grammarAccess.getDatamartDefinitionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartRole
+entryRuleDatamartRole 
+:
+{ before(grammarAccess.getDatamartRoleRule()); }
+	 ruleDatamartRole
+{ after(grammarAccess.getDatamartRoleRule()); } 
+	 EOF 
+;
+
+// Rule DatamartRole
+ruleDatamartRole
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartRoleAccess().getGroup()); }
+(rule__DatamartRole__Group__0)
+{ after(grammarAccess.getDatamartRoleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSource
+entryRuleDatamartSource 
+:
+{ before(grammarAccess.getDatamartSourceRule()); }
+	 ruleDatamartSource
+{ after(grammarAccess.getDatamartSourceRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSource
+ruleDatamartSource
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSourceAccess().getAlternatives()); }
+(rule__DatamartSource__Alternatives)
+{ after(grammarAccess.getDatamartSourceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartTask
+entryRuleDatamartTask 
+:
+{ before(grammarAccess.getDatamartTaskRule()); }
+	 ruleDatamartTask
+{ after(grammarAccess.getDatamartTaskRule()); } 
+	 EOF 
+;
+
+// Rule DatamartTask
+ruleDatamartTask
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getGroup()); }
+(rule__DatamartTask__Group__0)
+{ after(grammarAccess.getDatamartTaskAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartColumn
+entryRuleDatamartColumn 
+:
+{ before(grammarAccess.getDatamartColumnRule()); }
+	 ruleDatamartColumn
+{ after(grammarAccess.getDatamartColumnRule()); } 
+	 EOF 
+;
+
+// Rule DatamartColumn
+ruleDatamartColumn
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartColumnAccess().getGroup()); }
+(rule__DatamartColumn__Group__0)
+{ after(grammarAccess.getDatamartColumnAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartTaskFilter
+entryRuleDatamartTaskFilter 
+:
+{ before(grammarAccess.getDatamartTaskFilterRule()); }
+	 ruleDatamartTaskFilter
+{ after(grammarAccess.getDatamartTaskFilterRule()); } 
+	 EOF 
+;
+
+// Rule DatamartTaskFilter
+ruleDatamartTaskFilter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartTaskFilterAccess().getGroup()); }
+(rule__DatamartTaskFilter__Group__0)
+{ after(grammarAccess.getDatamartTaskFilterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartCube
+entryRuleDatamartCube 
+:
+{ before(grammarAccess.getDatamartCubeRule()); }
+	 ruleDatamartCube
+{ after(grammarAccess.getDatamartCubeRule()); } 
+	 EOF 
+;
+
+// Rule DatamartCube
+ruleDatamartCube
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getGroup()); }
+(rule__DatamartCube__Group__0)
+{ after(grammarAccess.getDatamartCubeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartReference
+entryRuleDatamartReference 
+:
+{ before(grammarAccess.getDatamartReferenceRule()); }
+	 ruleDatamartReference
+{ after(grammarAccess.getDatamartReferenceRule()); } 
+	 EOF 
+;
+
+// Rule DatamartReference
+ruleDatamartReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartReferenceAccess().getGroup()); }
+(rule__DatamartReference__Group__0)
+{ after(grammarAccess.getDatamartReferenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartEntity
+entryRuleDatamartEntity 
+:
+{ before(grammarAccess.getDatamartEntityRule()); }
+	 ruleDatamartEntity
+{ after(grammarAccess.getDatamartEntityRule()); } 
+	 EOF 
+;
+
+// Rule DatamartEntity
+ruleDatamartEntity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getGroup()); }
+(rule__DatamartEntity__Group__0)
+{ after(grammarAccess.getDatamartEntityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartNavigation
+entryRuleDatamartNavigation 
+:
+{ before(grammarAccess.getDatamartNavigationRule()); }
+	 ruleDatamartNavigation
+{ after(grammarAccess.getDatamartNavigationRule()); } 
+	 EOF 
+;
+
+// Rule DatamartNavigation
+ruleDatamartNavigation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartNavigationAccess().getAlternatives()); }
+(rule__DatamartNavigation__Alternatives)
+{ after(grammarAccess.getDatamartNavigationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartOwner
+entryRuleDatamartOwner 
+:
+{ before(grammarAccess.getDatamartOwnerRule()); }
+	 ruleDatamartOwner
+{ after(grammarAccess.getDatamartOwnerRule()); } 
+	 EOF 
+;
+
+// Rule DatamartOwner
+ruleDatamartOwner
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartOwnerAccess().getGroup()); }
+(rule__DatamartOwner__Group__0)
+{ after(grammarAccess.getDatamartOwnerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartMember
+entryRuleDatamartMember 
+:
+{ before(grammarAccess.getDatamartMemberRule()); }
+	 ruleDatamartMember
+{ after(grammarAccess.getDatamartMemberRule()); } 
+	 EOF 
+;
+
+// Rule DatamartMember
+ruleDatamartMember
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartMemberAccess().getGroup()); }
+(rule__DatamartMember__Group__0)
+{ after(grammarAccess.getDatamartMemberAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartProperty
+entryRuleDatamartProperty 
+:
+{ before(grammarAccess.getDatamartPropertyRule()); }
+	 ruleDatamartProperty
+{ after(grammarAccess.getDatamartPropertyRule()); } 
+	 EOF 
+;
+
+// Rule DatamartProperty
+ruleDatamartProperty
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartPropertyAccess().getGroup()); }
+(rule__DatamartProperty__Group__0)
+{ after(grammarAccess.getDatamartPropertyAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartCondition
+entryRuleDatamartCondition 
+:
+{ before(grammarAccess.getDatamartConditionRule()); }
+	 ruleDatamartCondition
+{ after(grammarAccess.getDatamartConditionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartCondition
+ruleDatamartCondition
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartConditionAccess().getGroup()); }
+(rule__DatamartCondition__Group__0)
+{ after(grammarAccess.getDatamartConditionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartOrder
+entryRuleDatamartOrder 
+:
+{ before(grammarAccess.getDatamartOrderRule()); }
+	 ruleDatamartOrder
+{ after(grammarAccess.getDatamartOrderRule()); } 
+	 EOF 
+;
+
+// Rule DatamartOrder
+ruleDatamartOrder
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartOrderAccess().getGroup()); }
+(rule__DatamartOrder__Group__0)
+{ after(grammarAccess.getDatamartOrderAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartDisjunction
+entryRuleDatamartDisjunction 
+:
+{ before(grammarAccess.getDatamartDisjunctionRule()); }
+	 ruleDatamartDisjunction
+{ after(grammarAccess.getDatamartDisjunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartDisjunction
+ruleDatamartDisjunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartDisjunctionAccess().getGroup()); }
+(rule__DatamartDisjunction__Group__0)
+{ after(grammarAccess.getDatamartDisjunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartConjunction
+entryRuleDatamartConjunction 
+:
+{ before(grammarAccess.getDatamartConjunctionRule()); }
+	 ruleDatamartConjunction
+{ after(grammarAccess.getDatamartConjunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartConjunction
+ruleDatamartConjunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartConjunctionAccess().getGroup()); }
+(rule__DatamartConjunction__Group__0)
+{ after(grammarAccess.getDatamartConjunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartConditionalExpression
+entryRuleDatamartConditionalExpression 
+:
+{ before(grammarAccess.getDatamartConditionalExpressionRule()); }
+	 ruleDatamartConditionalExpression
+{ after(grammarAccess.getDatamartConditionalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartConditionalExpression
+ruleDatamartConditionalExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartConditionalExpressionAccess().getGroup()); }
+(rule__DatamartConditionalExpression__Group__0)
+{ after(grammarAccess.getDatamartConditionalExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartOperand
+entryRuleDatamartOperand 
+:
+{ before(grammarAccess.getDatamartOperandRule()); }
+	 ruleDatamartOperand
+{ after(grammarAccess.getDatamartOperandRule()); } 
+	 EOF 
+;
+
+// Rule DatamartOperand
+ruleDatamartOperand
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartOperandAccess().getAlternatives()); }
+(rule__DatamartOperand__Alternatives)
+{ after(grammarAccess.getDatamartOperandAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartValue
+entryRuleDatamartValue 
+:
+{ before(grammarAccess.getDatamartValueRule()); }
+	 ruleDatamartValue
+{ after(grammarAccess.getDatamartValueRule()); } 
+	 EOF 
+;
+
+// Rule DatamartValue
+ruleDatamartValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartValueAccess().getAlternatives()); }
+(rule__DatamartValue__Alternatives)
+{ after(grammarAccess.getDatamartValueAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartCubeElement
+entryRuleDatamartCubeElement 
+:
+{ before(grammarAccess.getDatamartCubeElementRule()); }
+	 ruleDatamartCubeElement
+{ after(grammarAccess.getDatamartCubeElementRule()); } 
+	 EOF 
+;
+
+// Rule DatamartCubeElement
+ruleDatamartCubeElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartCubeElementAccess().getAlternatives()); }
+(rule__DatamartCubeElement__Alternatives)
+{ after(grammarAccess.getDatamartCubeElementAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartDefineDerivedMeasure
+entryRuleDatamartDefineDerivedMeasure 
+:
+{ before(grammarAccess.getDatamartDefineDerivedMeasureRule()); }
+	 ruleDatamartDefineDerivedMeasure
+{ after(grammarAccess.getDatamartDefineDerivedMeasureRule()); } 
+	 EOF 
+;
+
+// Rule DatamartDefineDerivedMeasure
+ruleDatamartDefineDerivedMeasure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartDefineDerivedMeasureAccess().getGroup()); }
+(rule__DatamartDefineDerivedMeasure__Group__0)
+{ after(grammarAccess.getDatamartDefineDerivedMeasureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartAddition
+entryRuleDatamartAddition 
+:
+{ before(grammarAccess.getDatamartAdditionRule()); }
+	 ruleDatamartAddition
+{ after(grammarAccess.getDatamartAdditionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartAddition
+ruleDatamartAddition
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartAdditionAccess().getGroup()); }
+(rule__DatamartAddition__Group__0)
+{ after(grammarAccess.getDatamartAdditionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartMultiplication
+entryRuleDatamartMultiplication 
+:
+{ before(grammarAccess.getDatamartMultiplicationRule()); }
+	 ruleDatamartMultiplication
+{ after(grammarAccess.getDatamartMultiplicationRule()); } 
+	 EOF 
+;
+
+// Rule DatamartMultiplication
+ruleDatamartMultiplication
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartMultiplicationAccess().getGroup()); }
+(rule__DatamartMultiplication__Group__0)
+{ after(grammarAccess.getDatamartMultiplicationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartPrimary
+entryRuleDatamartPrimary 
+:
+{ before(grammarAccess.getDatamartPrimaryRule()); }
+	 ruleDatamartPrimary
+{ after(grammarAccess.getDatamartPrimaryRule()); } 
+	 EOF 
+;
+
+// Rule DatamartPrimary
+ruleDatamartPrimary
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartPrimaryAccess().getAlternatives()); }
+(rule__DatamartPrimary__Alternatives)
+{ after(grammarAccess.getDatamartPrimaryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartNumberOrElement
+entryRuleDatamartNumberOrElement 
+:
+{ before(grammarAccess.getDatamartNumberOrElementRule()); }
+	 ruleDatamartNumberOrElement
+{ after(grammarAccess.getDatamartNumberOrElementRule()); } 
+	 EOF 
+;
+
+// Rule DatamartNumberOrElement
+ruleDatamartNumberOrElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartNumberOrElementAccess().getAlternatives()); }
+(rule__DatamartNumberOrElement__Alternatives)
+{ after(grammarAccess.getDatamartNumberOrElementAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartMemberTuple
+entryRuleDatamartMemberTuple 
+:
+{ before(grammarAccess.getDatamartMemberTupleRule()); }
+	 ruleDatamartMemberTuple
+{ after(grammarAccess.getDatamartMemberTupleRule()); } 
+	 EOF 
+;
+
+// Rule DatamartMemberTuple
+ruleDatamartMemberTuple
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartMemberTupleAccess().getGroup()); }
+(rule__DatamartMemberTuple__Group__0)
+{ after(grammarAccess.getDatamartMemberTupleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartFunction
+entryRuleDatamartFunction 
+:
+{ before(grammarAccess.getDatamartFunctionRule()); }
+	 ruleDatamartFunction
+{ after(grammarAccess.getDatamartFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartFunction
+ruleDatamartFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartFunctionAccess().getFunctionAssignment()); }
+(rule__DatamartFunction__FunctionAssignment)
+{ after(grammarAccess.getDatamartFunctionAccess().getFunctionAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartParameterFunction
+entryRuleDatamartParameterFunction 
+:
+{ before(grammarAccess.getDatamartParameterFunctionRule()); }
+	 ruleDatamartParameterFunction
+{ after(grammarAccess.getDatamartParameterFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartParameterFunction
+ruleDatamartParameterFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartParameterFunctionAccess().getGroup()); }
+(rule__DatamartParameterFunction__Group__0)
+{ after(grammarAccess.getDatamartParameterFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartFunctionIntParameter
+entryRuleDatamartFunctionIntParameter 
+:
+{ before(grammarAccess.getDatamartFunctionIntParameterRule()); }
+	 ruleDatamartFunctionIntParameter
+{ after(grammarAccess.getDatamartFunctionIntParameterRule()); } 
+	 EOF 
+;
+
+// Rule DatamartFunctionIntParameter
+ruleDatamartFunctionIntParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartFunctionIntParameterAccess().getValueAssignment()); }
+(rule__DatamartFunctionIntParameter__ValueAssignment)
+{ after(grammarAccess.getDatamartFunctionIntParameterAccess().getValueAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSetFunction
+entryRuleDatamartSetFunction 
+:
+{ before(grammarAccess.getDatamartSetFunctionRule()); }
+	 ruleDatamartSetFunction
+{ after(grammarAccess.getDatamartSetFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSetFunction
+ruleDatamartSetFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSetFunctionAccess().getSetFunctionAssignment()); }
+(rule__DatamartSetFunction__SetFunctionAssignment)
+{ after(grammarAccess.getDatamartSetFunctionAccess().getSetFunctionAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSetParameterFunction
+entryRuleDatamartSetParameterFunction 
+:
+{ before(grammarAccess.getDatamartSetParameterFunctionRule()); }
+	 ruleDatamartSetParameterFunction
+{ after(grammarAccess.getDatamartSetParameterFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSetParameterFunction
+ruleDatamartSetParameterFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSetParameterFunctionAccess().getGroup()); }
+(rule__DatamartSetParameterFunction__Group__0)
+{ after(grammarAccess.getDatamartSetParameterFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSetAggregationFunction
+entryRuleDatamartSetAggregationFunction 
+:
+{ before(grammarAccess.getDatamartSetAggregationFunctionRule()); }
+	 ruleDatamartSetAggregationFunction
+{ after(grammarAccess.getDatamartSetAggregationFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSetAggregationFunction
+ruleDatamartSetAggregationFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSetAggregationFunctionAccess().getGroup()); }
+(rule__DatamartSetAggregationFunction__Group__0)
+{ after(grammarAccess.getDatamartSetAggregationFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSetTuple
+entryRuleDatamartSetTuple 
+:
+{ before(grammarAccess.getDatamartSetTupleRule()); }
+	 ruleDatamartSetTuple
+{ after(grammarAccess.getDatamartSetTupleRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSetTuple
+ruleDatamartSetTuple
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSetTupleAccess().getGroup()); }
+(rule__DatamartSetTuple__Group__0)
+{ after(grammarAccess.getDatamartSetTupleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartAggregationFunction
+entryRuleDatamartAggregationFunction 
+:
+{ before(grammarAccess.getDatamartAggregationFunctionRule()); }
+	 ruleDatamartAggregationFunction
+{ after(grammarAccess.getDatamartAggregationFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DatamartAggregationFunction
+ruleDatamartAggregationFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartAggregationFunctionAccess().getAggregationAssignment()); }
+(rule__DatamartAggregationFunction__AggregationAssignment)
+{ after(grammarAccess.getDatamartAggregationFunctionAccess().getAggregationAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartAggregation
+entryRuleDatamartAggregation 
+:
+{ before(grammarAccess.getDatamartAggregationRule()); }
+	 ruleDatamartAggregation
+{ after(grammarAccess.getDatamartAggregationRule()); } 
+	 EOF 
+;
+
+// Rule DatamartAggregation
+ruleDatamartAggregation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartAggregationAccess().getGroup()); }
+(rule__DatamartAggregation__Group__0)
+{ after(grammarAccess.getDatamartAggregationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSetAggregation
+entryRuleDatamartSetAggregation 
+:
+{ before(grammarAccess.getDatamartSetAggregationRule()); }
+	 ruleDatamartSetAggregation
+{ after(grammarAccess.getDatamartSetAggregationRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSetAggregation
+ruleDatamartSetAggregation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSetAggregationAccess().getGroup()); }
+(rule__DatamartSetAggregation__Group__0)
+{ after(grammarAccess.getDatamartSetAggregationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartSlicer
+entryRuleDatamartSlicer 
+:
+{ before(grammarAccess.getDatamartSlicerRule()); }
+	 ruleDatamartSlicer
+{ after(grammarAccess.getDatamartSlicerRule()); } 
+	 EOF 
+;
+
+// Rule DatamartSlicer
+ruleDatamartSlicer
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartSlicerAccess().getGroup()); }
+(rule__DatamartSlicer__Group__0)
+{ after(grammarAccess.getDatamartSlicerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartAxis
+entryRuleDatamartAxis 
+:
+{ before(grammarAccess.getDatamartAxisRule()); }
+	 ruleDatamartAxis
+{ after(grammarAccess.getDatamartAxisRule()); } 
+	 EOF 
+;
+
+// Rule DatamartAxis
+ruleDatamartAxis
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartAxisAccess().getGroup()); }
+(rule__DatamartAxis__Group__0)
+{ after(grammarAccess.getDatamartAxisAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartElement
+entryRuleDatamartElement 
+:
+{ before(grammarAccess.getDatamartElementRule()); }
+	 ruleDatamartElement
+{ after(grammarAccess.getDatamartElementRule()); } 
+	 EOF 
+;
+
+// Rule DatamartElement
+ruleDatamartElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartElementAccess().getAlternatives()); }
+(rule__DatamartElement__Alternatives)
+{ after(grammarAccess.getDatamartElementAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartDerivedMeasure
+entryRuleDatamartDerivedMeasure 
+:
+{ before(grammarAccess.getDatamartDerivedMeasureRule()); }
+	 ruleDatamartDerivedMeasure
+{ after(grammarAccess.getDatamartDerivedMeasureRule()); } 
+	 EOF 
+;
+
+// Rule DatamartDerivedMeasure
+ruleDatamartDerivedMeasure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartDerivedMeasureAccess().getGroup()); }
+(rule__DatamartDerivedMeasure__Group__0)
+{ after(grammarAccess.getDatamartDerivedMeasureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartMeasure
+entryRuleDatamartMeasure 
+:
+{ before(grammarAccess.getDatamartMeasureRule()); }
+	 ruleDatamartMeasure
+{ after(grammarAccess.getDatamartMeasureRule()); } 
+	 EOF 
+;
+
+// Rule DatamartMeasure
+ruleDatamartMeasure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartMeasureAccess().getGroup()); }
+(rule__DatamartMeasure__Group__0)
+{ after(grammarAccess.getDatamartMeasureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartHierarchy
+entryRuleDatamartHierarchy 
+:
+{ before(grammarAccess.getDatamartHierarchyRule()); }
+	 ruleDatamartHierarchy
+{ after(grammarAccess.getDatamartHierarchyRule()); } 
+	 EOF 
+;
+
+// Rule DatamartHierarchy
+ruleDatamartHierarchy
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartHierarchyAccess().getGroup()); }
+(rule__DatamartHierarchy__Group__0)
+{ after(grammarAccess.getDatamartHierarchyAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartImport
+entryRuleDatamartImport 
+:
+{ before(grammarAccess.getDatamartImportRule()); }
+	 ruleDatamartImport
+{ after(grammarAccess.getDatamartImportRule()); } 
+	 EOF 
+;
+
+// Rule DatamartImport
+ruleDatamartImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartImportAccess().getGroup()); }
+(rule__DatamartImport__Group__0)
+{ after(grammarAccess.getDatamartImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDatamartQualifiedNameWithWildCard
+entryRuleDatamartQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getDatamartQualifiedNameWithWildCardRule()); }
+	 ruleDatamartQualifiedNameWithWildCard
+{ after(grammarAccess.getDatamartQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule DatamartQualifiedNameWithWildCard
+ruleDatamartQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDatamartQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__DatamartQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getDatamartQualifiedNameWithWildCardAccess().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 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 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 entryRulePropertyFillerData
+entryRulePropertyFillerData 
+:
+{ before(grammarAccess.getPropertyFillerDataRule()); }
+	 rulePropertyFillerData
+{ after(grammarAccess.getPropertyFillerDataRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerData
+rulePropertyFillerData
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerDataAccess().getGroup()); }
+(rule__PropertyFillerData__Group__0)
+{ after(grammarAccess.getPropertyFillerDataAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerType
+entryRulePropertyFillerType 
+:
+{ before(grammarAccess.getPropertyFillerTypeRule()); }
+	 rulePropertyFillerType
+{ after(grammarAccess.getPropertyFillerTypeRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerType
+rulePropertyFillerType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getAlternatives()); }
+(rule__PropertyFillerType__Alternatives)
+{ after(grammarAccess.getPropertyFillerTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerDateFuture
+entryRulePropertyFillerDateFuture 
+:
+{ before(grammarAccess.getPropertyFillerDateFutureRule()); }
+	 rulePropertyFillerDateFuture
+{ after(grammarAccess.getPropertyFillerDateFutureRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerDateFuture
+rulePropertyFillerDateFuture
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerDateFutureAccess().getGroup()); }
+(rule__PropertyFillerDateFuture__Group__0)
+{ after(grammarAccess.getPropertyFillerDateFutureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerDatePast
+entryRulePropertyFillerDatePast 
+:
+{ before(grammarAccess.getPropertyFillerDatePastRule()); }
+	 rulePropertyFillerDatePast
+{ after(grammarAccess.getPropertyFillerDatePastRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerDatePast
+rulePropertyFillerDatePast
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerDatePastAccess().getGroup()); }
+(rule__PropertyFillerDatePast__Group__0)
+{ after(grammarAccess.getPropertyFillerDatePastAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerDateRange
+entryRulePropertyFillerDateRange 
+:
+{ before(grammarAccess.getPropertyFillerDateRangeRule()); }
+	 rulePropertyFillerDateRange
+{ after(grammarAccess.getPropertyFillerDateRangeRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerDateRange
+rulePropertyFillerDateRange
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerDateRangeAccess().getGroup()); }
+(rule__PropertyFillerDateRange__Group__0)
+{ after(grammarAccess.getPropertyFillerDateRangeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerSignedDoubleRange
+entryRulePropertyFillerSignedDoubleRange 
+:
+{ before(grammarAccess.getPropertyFillerSignedDoubleRangeRule()); }
+	 rulePropertyFillerSignedDoubleRange
+{ after(grammarAccess.getPropertyFillerSignedDoubleRangeRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedDoubleRange
+rulePropertyFillerSignedDoubleRange
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup()); }
+(rule__PropertyFillerSignedDoubleRange__Group__0)
+{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerSignedDoubleRandom
+entryRulePropertyFillerSignedDoubleRandom 
+:
+{ before(grammarAccess.getPropertyFillerSignedDoubleRandomRule()); }
+	 rulePropertyFillerSignedDoubleRandom
+{ after(grammarAccess.getPropertyFillerSignedDoubleRandomRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedDoubleRandom
+rulePropertyFillerSignedDoubleRandom
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getGroup()); }
+(rule__PropertyFillerSignedDoubleRandom__Group__0)
+{ after(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerSignedIntegerRange
+entryRulePropertyFillerSignedIntegerRange 
+:
+{ before(grammarAccess.getPropertyFillerSignedIntegerRangeRule()); }
+	 rulePropertyFillerSignedIntegerRange
+{ after(grammarAccess.getPropertyFillerSignedIntegerRangeRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedIntegerRange
+rulePropertyFillerSignedIntegerRange
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup()); }
+(rule__PropertyFillerSignedIntegerRange__Group__0)
+{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerSignedIntegerRandom
+entryRulePropertyFillerSignedIntegerRandom 
+:
+{ before(grammarAccess.getPropertyFillerSignedIntegerRandomRule()); }
+	 rulePropertyFillerSignedIntegerRandom
+{ after(grammarAccess.getPropertyFillerSignedIntegerRandomRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedIntegerRandom
+rulePropertyFillerSignedIntegerRandom
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getGroup()); }
+(rule__PropertyFillerSignedIntegerRandom__Group__0)
+{ after(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerTextRandom
+entryRulePropertyFillerTextRandom 
+:
+{ before(grammarAccess.getPropertyFillerTextRandomRule()); }
+	 rulePropertyFillerTextRandom
+{ after(grammarAccess.getPropertyFillerTextRandomRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextRandom
+rulePropertyFillerTextRandom
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerTextRandomAccess().getGroup()); }
+(rule__PropertyFillerTextRandom__Group__0)
+{ after(grammarAccess.getPropertyFillerTextRandomAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerTextParagraphs
+entryRulePropertyFillerTextParagraphs 
+:
+{ before(grammarAccess.getPropertyFillerTextParagraphsRule()); }
+	 rulePropertyFillerTextParagraphs
+{ after(grammarAccess.getPropertyFillerTextParagraphsRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextParagraphs
+rulePropertyFillerTextParagraphs
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerTextParagraphsAccess().getGroup()); }
+(rule__PropertyFillerTextParagraphs__Group__0)
+{ after(grammarAccess.getPropertyFillerTextParagraphsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerTextSentences
+entryRulePropertyFillerTextSentences 
+:
+{ before(grammarAccess.getPropertyFillerTextSentencesRule()); }
+	 rulePropertyFillerTextSentences
+{ after(grammarAccess.getPropertyFillerTextSentencesRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextSentences
+rulePropertyFillerTextSentences
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerTextSentencesAccess().getGroup()); }
+(rule__PropertyFillerTextSentences__Group__0)
+{ after(grammarAccess.getPropertyFillerTextSentencesAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerTextWords
+entryRulePropertyFillerTextWords 
+:
+{ before(grammarAccess.getPropertyFillerTextWordsRule()); }
+	 rulePropertyFillerTextWords
+{ after(grammarAccess.getPropertyFillerTextWordsRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextWords
+rulePropertyFillerTextWords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerTextWordsAccess().getGroup()); }
+(rule__PropertyFillerTextWords__Group__0)
+{ after(grammarAccess.getPropertyFillerTextWordsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedDoubleRange
+entryRulePropertyFillerUnsignedDoubleRange 
+:
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule()); }
+	 rulePropertyFillerUnsignedDoubleRange
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedDoubleRange
+rulePropertyFillerUnsignedDoubleRange
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup()); }
+(rule__PropertyFillerUnsignedDoubleRange__Group__0)
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedDoubleRandom
+entryRulePropertyFillerUnsignedDoubleRandom 
+:
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRandomRule()); }
+	 rulePropertyFillerUnsignedDoubleRandom
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRandomRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedDoubleRandom
+rulePropertyFillerUnsignedDoubleRandom
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getGroup()); }
+(rule__PropertyFillerUnsignedDoubleRandom__Group__0)
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedIntegerRange
+entryRulePropertyFillerUnsignedIntegerRange 
+:
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule()); }
+	 rulePropertyFillerUnsignedIntegerRange
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedIntegerRange
+rulePropertyFillerUnsignedIntegerRange
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup()); }
+(rule__PropertyFillerUnsignedIntegerRange__Group__0)
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedIntegerRandom
+entryRulePropertyFillerUnsignedIntegerRandom 
+:
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRandomRule()); }
+	 rulePropertyFillerUnsignedIntegerRandom
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRandomRule()); } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedIntegerRandom
+rulePropertyFillerUnsignedIntegerRandom
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getGroup()); }
+(rule__PropertyFillerUnsignedIntegerRandom__Group__0)
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSignedNumber
+entryRuleSignedNumber 
+:
+{ before(grammarAccess.getSignedNumberRule()); }
+	 ruleSignedNumber
+{ after(grammarAccess.getSignedNumberRule()); } 
+	 EOF 
+;
+
+// Rule SignedNumber
+ruleSignedNumber
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSignedNumberAccess().getGroup()); }
+(rule__SignedNumber__Group__0)
+{ after(grammarAccess.getSignedNumberAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleUnsignedNumber
+entryRuleUnsignedNumber 
+:
+{ before(grammarAccess.getUnsignedNumberRule()); }
+	 ruleUnsignedNumber
+{ after(grammarAccess.getUnsignedNumberRule()); } 
+	 EOF 
+;
+
+// Rule UnsignedNumber
+ruleUnsignedNumber
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getUnsignedNumberAccess().getGroup()); }
+(rule__UnsignedNumber__Group__0)
+{ after(grammarAccess.getUnsignedNumberAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSINT
+entryRuleSINT 
+:
+{ before(grammarAccess.getSINTRule()); }
+	 ruleSINT
+{ after(grammarAccess.getSINTRule()); } 
+	 EOF 
+;
+
+// Rule SINT
+ruleSINT
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSINTAccess().getGroup()); }
+(rule__SINT__Group__0)
+{ after(grammarAccess.getSINTAccess().getGroup()); }
+)
+
+;
+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 AxisEnum
+ruleAxisEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAxisEnumAccess().getAlternatives()); }
+(rule__AxisEnum__Alternatives)
+{ after(grammarAccess.getAxisEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule FunctionEnum
+ruleFunctionEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionEnumAccess().getAlternatives()); }
+(rule__FunctionEnum__Alternatives)
+{ after(grammarAccess.getFunctionEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule ParameterFunctionEnum
+ruleParameterFunctionEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterFunctionEnumAccess().getAlternatives()); }
+(rule__ParameterFunctionEnum__Alternatives)
+{ after(grammarAccess.getParameterFunctionEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule SetFunctionEnum
+ruleSetFunctionEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSetFunctionEnumAccess().getAlternatives()); }
+(rule__SetFunctionEnum__Alternatives)
+{ after(grammarAccess.getSetFunctionEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule SetParameterFunctionEnum
+ruleSetParameterFunctionEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSetParameterFunctionEnumAccess().getAlternatives()); }
+(rule__SetParameterFunctionEnum__Alternatives)
+{ after(grammarAccess.getSetParameterFunctionEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule SetAggregationEnum
+ruleSetAggregationEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSetAggregationEnumAccess().getAlternatives()); }
+(rule__SetAggregationEnum__Alternatives)
+{ after(grammarAccess.getSetAggregationEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule AggregationEnum
+ruleAggregationEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAggregationEnumAccess().getAlternatives()); }
+(rule__AggregationEnum__Alternatives)
+{ after(grammarAccess.getAggregationEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule OperatorEnum
+ruleOperatorEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperatorEnumAccess().getAlternatives()); }
+(rule__OperatorEnum__Alternatives)
+{ after(grammarAccess.getOperatorEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule SqlAggregationEnum
+ruleSqlAggregationEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSqlAggregationEnumAccess().getAlternatives()); }
+(rule__SqlAggregationEnum__Alternatives)
+{ after(grammarAccess.getSqlAggregationEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule ValueScaleEnum
+ruleValueScaleEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValueScaleEnumAccess().getAlternatives()); }
+(rule__ValueScaleEnum__Alternatives)
+{ after(grammarAccess.getValueScaleEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule TaskQueryTopicEnum
+ruleTaskQueryTopicEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getAlternatives()); }
+(rule__TaskQueryTopicEnum__Alternatives)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule TaskQueryColumnEnum
+ruleTaskQueryColumnEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getAlternatives()); }
+(rule__TaskQueryColumnEnum__Alternatives)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule TaskFilterEnum
+ruleTaskFilterEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTaskFilterEnumAccess().getAlternatives()); }
+(rule__TaskFilterEnum__Alternatives)
+{ after(grammarAccess.getTaskFilterEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule OrderEnum
+ruleOrderEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOrderEnumAccess().getAlternatives()); }
+(rule__OrderEnum__Alternatives)
+{ after(grammarAccess.getOrderEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__DatamartSource__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartSourceAccess().getDatamartCubeParserRuleCall_0()); }
+	ruleDatamartCube
+{ after(grammarAccess.getDatamartSourceAccess().getDatamartCubeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartSourceAccess().getDatamartEntityParserRuleCall_1()); }
+	ruleDatamartEntity
+{ after(grammarAccess.getDatamartSourceAccess().getDatamartEntityParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartSourceAccess().getDatamartTaskParserRuleCall_2()); }
+	ruleDatamartTask
+{ after(grammarAccess.getDatamartSourceAccess().getDatamartTaskParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartNavigation__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartNavigationAccess().getDatamartOwnerParserRuleCall_0()); }
+	ruleDatamartOwner
+{ after(grammarAccess.getDatamartNavigationAccess().getDatamartOwnerParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartNavigationAccess().getDatamartMemberParserRuleCall_1()); }
+	ruleDatamartMember
+{ after(grammarAccess.getDatamartNavigationAccess().getDatamartMemberParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartOperand__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartOperandAccess().getDatamartValueParserRuleCall_0()); }
+	ruleDatamartValue
+{ after(grammarAccess.getDatamartOperandAccess().getDatamartValueParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartOperandAccess().getGroup_1()); }
+(rule__DatamartOperand__Group_1__0)
+{ after(grammarAccess.getDatamartOperandAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartValue__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartValueAccess().getNumberValueAssignment_0()); }
+(rule__DatamartValue__NumberValueAssignment_0)
+{ after(grammarAccess.getDatamartValueAccess().getNumberValueAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartValueAccess().getStringValueAssignment_1()); }
+(rule__DatamartValue__StringValueAssignment_1)
+{ after(grammarAccess.getDatamartValueAccess().getStringValueAssignment_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartValueAccess().getAlternatives_2()); }
+(rule__DatamartValue__Alternatives_2)
+{ after(grammarAccess.getDatamartValueAccess().getAlternatives_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartValueAccess().getDatamartPropertyParserRuleCall_3()); }
+	ruleDatamartProperty
+{ after(grammarAccess.getDatamartValueAccess().getDatamartPropertyParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartValueAccess().getDatamartTaskFilterParserRuleCall_4()); }
+	ruleDatamartTaskFilter
+{ after(grammarAccess.getDatamartValueAccess().getDatamartTaskFilterParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartValueAccess().getDatamartColumnParserRuleCall_5()); }
+	ruleDatamartColumn
+{ after(grammarAccess.getDatamartValueAccess().getDatamartColumnParserRuleCall_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartValue__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartValueAccess().getGroup_2_0()); }
+(rule__DatamartValue__Group_2_0__0)
+{ after(grammarAccess.getDatamartValueAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartValueAccess().getSelectedAssignment_2_1()); }
+(rule__DatamartValue__SelectedAssignment_2_1)
+{ after(grammarAccess.getDatamartValueAccess().getSelectedAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCubeElement__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeElementAccess().getDatamartAxisParserRuleCall_0()); }
+	ruleDatamartAxis
+{ after(grammarAccess.getDatamartCubeElementAccess().getDatamartAxisParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartCubeElementAccess().getDatamartSlicerParserRuleCall_1()); }
+	ruleDatamartSlicer
+{ after(grammarAccess.getDatamartCubeElementAccess().getDatamartSlicerParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartCubeElementAccess().getDatamartDefineDerivedMeasureParserRuleCall_2()); }
+	ruleDatamartDefineDerivedMeasure
+{ after(grammarAccess.getDatamartCubeElementAccess().getDatamartDefineDerivedMeasureParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartAddition__Alternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartAdditionAccess().getGroup_1_0_0()); }
+(rule__DatamartAddition__Group_1_0_0__0)
+{ after(grammarAccess.getDatamartAdditionAccess().getGroup_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartAdditionAccess().getGroup_1_0_1()); }
+(rule__DatamartAddition__Group_1_0_1__0)
+{ after(grammarAccess.getDatamartAdditionAccess().getGroup_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartMultiplication__Alternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartMultiplicationAccess().getGroup_1_0_0()); }
+(rule__DatamartMultiplication__Group_1_0_0__0)
+{ after(grammarAccess.getDatamartMultiplicationAccess().getGroup_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartMultiplicationAccess().getGroup_1_0_1()); }
+(rule__DatamartMultiplication__Group_1_0_1__0)
+{ after(grammarAccess.getDatamartMultiplicationAccess().getGroup_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPrimary__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPrimaryAccess().getDatamartNumberOrElementParserRuleCall_0()); }
+	ruleDatamartNumberOrElement
+{ after(grammarAccess.getDatamartPrimaryAccess().getDatamartNumberOrElementParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartPrimaryAccess().getGroup_1()); }
+(rule__DatamartPrimary__Group_1__0)
+{ after(grammarAccess.getDatamartPrimaryAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartNumberOrElement__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartNumberOrElementAccess().getValueAssignment_0()); }
+(rule__DatamartNumberOrElement__ValueAssignment_0)
+{ after(grammarAccess.getDatamartNumberOrElementAccess().getValueAssignment_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMeasureParserRuleCall_1()); }
+	ruleDatamartMeasure
+{ after(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMeasureParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartNumberOrElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); }
+	ruleDatamartDerivedMeasure
+{ after(grammarAccess.getDatamartNumberOrElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMemberTupleParserRuleCall_3()); }
+	ruleDatamartMemberTuple
+{ after(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMemberTupleParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartNumberOrElementAccess().getDatamartAggregationParserRuleCall_4()); }
+	ruleDatamartAggregation
+{ after(grammarAccess.getDatamartNumberOrElementAccess().getDatamartAggregationParserRuleCall_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartMemberTuple__Alternatives_0_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartMemberTupleAccess().getFunctionAssignment_0_0_0()); }
+(rule__DatamartMemberTuple__FunctionAssignment_0_0_0)
+{ after(grammarAccess.getDatamartMemberTupleAccess().getFunctionAssignment_0_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartMemberTupleAccess().getFunctionAssignment_0_0_1()); }
+(rule__DatamartMemberTuple__FunctionAssignment_0_0_1)
+{ after(grammarAccess.getDatamartMemberTupleAccess().getFunctionAssignment_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartSetTuple__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartSetTupleAccess().getSetFunctionAssignment_0_0()); }
+(rule__DatamartSetTuple__SetFunctionAssignment_0_0)
+{ after(grammarAccess.getDatamartSetTupleAccess().getSetFunctionAssignment_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartSetTupleAccess().getSetFunctionAssignment_0_1()); }
+(rule__DatamartSetTuple__SetFunctionAssignment_0_1)
+{ after(grammarAccess.getDatamartSetTupleAccess().getSetFunctionAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartAggregation__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartAggregationAccess().getSetAssignment_2_0()); }
+(rule__DatamartAggregation__SetAssignment_2_0)
+{ after(grammarAccess.getDatamartAggregationAccess().getSetAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartAggregationAccess().getSetAssignment_2_1()); }
+(rule__DatamartAggregation__SetAssignment_2_1)
+{ after(grammarAccess.getDatamartAggregationAccess().getSetAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartSetAggregation__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartSetAggregationAccess().getSetAssignment_2_0()); }
+(rule__DatamartSetAggregation__SetAssignment_2_0)
+{ after(grammarAccess.getDatamartSetAggregationAccess().getSetAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartSetAggregationAccess().getSetAssignment_2_1()); }
+(rule__DatamartSetAggregation__SetAssignment_2_1)
+{ after(grammarAccess.getDatamartSetAggregationAccess().getSetAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartElement__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartElementAccess().getDatamartHierarchyParserRuleCall_0()); }
+	ruleDatamartHierarchy
+{ after(grammarAccess.getDatamartElementAccess().getDatamartHierarchyParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartElementAccess().getDatamartMeasureParserRuleCall_1()); }
+	ruleDatamartMeasure
+{ after(grammarAccess.getDatamartElementAccess().getDatamartMeasureParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); }
+	ruleDatamartDerivedMeasure
+{ after(grammarAccess.getDatamartElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartElementAccess().getDatamartSetAggregationParserRuleCall_3()); }
+	ruleDatamartSetAggregation
+{ after(grammarAccess.getDatamartElementAccess().getDatamartSetAggregationParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartHierarchy__Alternatives_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartHierarchyAccess().getFilteredAssignment_5_2_0()); }
+(rule__DatamartHierarchy__FilteredAssignment_5_2_0)
+{ after(grammarAccess.getDatamartHierarchyAccess().getFilteredAssignment_5_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartHierarchyAccess().getSelectedAssignment_5_2_1()); }
+(rule__DatamartHierarchy__SelectedAssignment_5_2_1)
+{ after(grammarAccess.getDatamartHierarchyAccess().getSelectedAssignment_5_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartHierarchy__OrderRefAlternatives_6_2_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0()); }
+	ruleDatamartMeasure
+{ after(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1()); }
+	ruleDatamartDerivedMeasure
+{ after(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateFutureParserRuleCall_0()); }
+	rulePropertyFillerDateFuture
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateFutureParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDatePastParserRuleCall_1()); }
+	rulePropertyFillerDatePast
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDatePastParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateRangeParserRuleCall_2()); }
+	rulePropertyFillerDateRange
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateRangeParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRangeParserRuleCall_3()); }
+	rulePropertyFillerSignedDoubleRange
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRangeParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRandomParserRuleCall_4()); }
+	rulePropertyFillerSignedDoubleRandom
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRandomParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRangeParserRuleCall_5()); }
+	rulePropertyFillerSignedIntegerRange
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRangeParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRandomParserRuleCall_6()); }
+	rulePropertyFillerSignedIntegerRandom
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRandomParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextRandomParserRuleCall_7()); }
+	rulePropertyFillerTextRandom
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextRandomParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextParagraphsParserRuleCall_8()); }
+	rulePropertyFillerTextParagraphs
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextParagraphsParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextSentencesParserRuleCall_9()); }
+	rulePropertyFillerTextSentences
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextSentencesParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextWordsParserRuleCall_10()); }
+	rulePropertyFillerTextWords
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextWordsParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRangeParserRuleCall_11()); }
+	rulePropertyFillerUnsignedDoubleRange
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRangeParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRandomParserRuleCall_12()); }
+	rulePropertyFillerUnsignedDoubleRandom
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRandomParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRangeParserRuleCall_13()); }
+	rulePropertyFillerUnsignedIntegerRange
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRangeParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRandomParserRuleCall_14()); }
+	rulePropertyFillerUnsignedIntegerRandom
+{ after(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRandomParserRuleCall_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerSignedDoubleRange__Alternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
+(rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0)
+{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
+(rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1)
+{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerSignedDoubleRange__Alternatives_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
+(rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0)
+{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
+(rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1)
+{ after(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerSignedIntegerRange__Alternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
+(rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0)
+{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
+(rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1)
+{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerSignedIntegerRange__Alternatives_2_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
+(rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0)
+{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
+(rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1)
+{ after(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
+(rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0)
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeAssignment_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
+(rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1)
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
+(rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0)
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeAssignment_1_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
+(rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1)
+{ after(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefAssignment_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
+(rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0)
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeAssignment_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
+(rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1)
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
+(rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0)
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeAssignment_2_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_1()); }
+(rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1)
+{ after(grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefAssignment_2_2_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__AxisEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAxisEnumAccess().getDEFAULTEnumLiteralDeclaration_0()); }
+(	'default' 
+)
+{ after(grammarAccess.getAxisEnumAccess().getDEFAULTEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAxisEnumAccess().getCOLUMNSEnumLiteralDeclaration_1()); }
+(	'columns' 
+)
+{ after(grammarAccess.getAxisEnumAccess().getCOLUMNSEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAxisEnumAccess().getROWSEnumLiteralDeclaration_2()); }
+(	'rows' 
+)
+{ after(grammarAccess.getAxisEnumAccess().getROWSEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAxisEnumAccess().getPAGESEnumLiteralDeclaration_3()); }
+(	'pages' 
+)
+{ after(grammarAccess.getAxisEnumAccess().getPAGESEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getAxisEnumAccess().getSECTIONSEnumLiteralDeclaration_4()); }
+(	'sections' 
+)
+{ after(grammarAccess.getAxisEnumAccess().getSECTIONSEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getAxisEnumAccess().getCHAPTERSEnumLiteralDeclaration_5()); }
+(	'chapters' 
+)
+{ after(grammarAccess.getAxisEnumAccess().getCHAPTERSEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FunctionEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionEnumAccess().getPREVMEMBEREnumLiteralDeclaration_0()); }
+(	'previous' 
+)
+{ after(grammarAccess.getFunctionEnumAccess().getPREVMEMBEREnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionEnumAccess().getNEXTMEMBEREnumLiteralDeclaration_1()); }
+(	'next' 
+)
+{ after(grammarAccess.getFunctionEnumAccess().getNEXTMEMBEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionEnumAccess().getFIRSTCHILDEnumLiteralDeclaration_2()); }
+(	'first' 
+)
+{ after(grammarAccess.getFunctionEnumAccess().getFIRSTCHILDEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionEnumAccess().getLASTCHILDEnumLiteralDeclaration_3()); }
+(	'last' 
+)
+{ after(grammarAccess.getFunctionEnumAccess().getLASTCHILDEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ParameterFunctionEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getParameterFunctionEnumAccess().getLAGEnumLiteralDeclaration_0()); }
+(	'lag' 
+)
+{ after(grammarAccess.getParameterFunctionEnumAccess().getLAGEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getParameterFunctionEnumAccess().getLEADEnumLiteralDeclaration_1()); }
+(	'lead' 
+)
+{ after(grammarAccess.getParameterFunctionEnumAccess().getLEADEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SetFunctionEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSetFunctionEnumAccess().getYTDEnumLiteralDeclaration_0()); }
+(	'year-to-date' 
+)
+{ after(grammarAccess.getSetFunctionEnumAccess().getYTDEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSetFunctionEnumAccess().getPERIODSTODATEEnumLiteralDeclaration_1()); }
+(	'periods' 
+)
+{ after(grammarAccess.getSetFunctionEnumAccess().getPERIODSTODATEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SetParameterFunctionEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSetParameterFunctionEnumAccess().getTAILEnumLiteralDeclaration_0()); }
+(	'tail' 
+)
+{ after(grammarAccess.getSetParameterFunctionEnumAccess().getTAILEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSetParameterFunctionEnumAccess().getHEADEnumLiteralDeclaration_1()); }
+(	'head' 
+)
+{ after(grammarAccess.getSetParameterFunctionEnumAccess().getHEADEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SetAggregationEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSetAggregationEnumAccess().getTOPCOUNTEnumLiteralDeclaration_0()); }
+(	'topcount' 
+)
+{ after(grammarAccess.getSetAggregationEnumAccess().getTOPCOUNTEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSetAggregationEnumAccess().getTOPSUMEnumLiteralDeclaration_1()); }
+(	'topsummation' 
+)
+{ after(grammarAccess.getSetAggregationEnumAccess().getTOPSUMEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getSetAggregationEnumAccess().getTOPPERCENTEnumLiteralDeclaration_2()); }
+(	'toppercentage' 
+)
+{ after(grammarAccess.getSetAggregationEnumAccess().getTOPPERCENTEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getSetAggregationEnumAccess().getBOTTOMCOUNTEnumLiteralDeclaration_3()); }
+(	'bottomcount' 
+)
+{ after(grammarAccess.getSetAggregationEnumAccess().getBOTTOMCOUNTEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getSetAggregationEnumAccess().getBOTTOMSUMEnumLiteralDeclaration_4()); }
+(	'bottomsummation' 
+)
+{ after(grammarAccess.getSetAggregationEnumAccess().getBOTTOMSUMEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getSetAggregationEnumAccess().getBOTTOMPERCENTEnumLiteralDeclaration_5()); }
+(	'bottompercentage' 
+)
+{ after(grammarAccess.getSetAggregationEnumAccess().getBOTTOMPERCENTEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AggregationEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAggregationEnumAccess().getAVGEnumLiteralDeclaration_0()); }
+(	'average' 
+)
+{ after(grammarAccess.getAggregationEnumAccess().getAVGEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAggregationEnumAccess().getSUMEnumLiteralDeclaration_1()); }
+(	'summation' 
+)
+{ after(grammarAccess.getAggregationEnumAccess().getSUMEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAggregationEnumAccess().getAGGREGATEEnumLiteralDeclaration_2()); }
+(	'aggregate' 
+)
+{ after(grammarAccess.getAggregationEnumAccess().getAGGREGATEEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAggregationEnumAccess().getSTDDEVEnumLiteralDeclaration_3()); }
+(	'deviation' 
+)
+{ after(grammarAccess.getAggregationEnumAccess().getSTDDEVEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OperatorEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperatorEnumAccess().getEQUALSEnumLiteralDeclaration_0()); }
+(	'=' 
+)
+{ after(grammarAccess.getOperatorEnumAccess().getEQUALSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOperatorEnumAccess().getLESSEnumLiteralDeclaration_1()); }
+(	'<' 
+)
+{ after(grammarAccess.getOperatorEnumAccess().getLESSEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOperatorEnumAccess().getGREATEREnumLiteralDeclaration_2()); }
+(	'>' 
+)
+{ after(grammarAccess.getOperatorEnumAccess().getGREATEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOperatorEnumAccess().getLESSEQUALEnumLiteralDeclaration_3()); }
+(	'<=' 
+)
+{ after(grammarAccess.getOperatorEnumAccess().getLESSEQUALEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOperatorEnumAccess().getGREATEREQUALEnumLiteralDeclaration_4()); }
+(	'>=' 
+)
+{ after(grammarAccess.getOperatorEnumAccess().getGREATEREQUALEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOperatorEnumAccess().getLIKEEnumLiteralDeclaration_5()); }
+(	'like' 
+)
+{ after(grammarAccess.getOperatorEnumAccess().getLIKEEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SqlAggregationEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSqlAggregationEnumAccess().getAVGEnumLiteralDeclaration_0()); }
+(	'average' 
+)
+{ after(grammarAccess.getSqlAggregationEnumAccess().getAVGEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSqlAggregationEnumAccess().getSUMEnumLiteralDeclaration_1()); }
+(	'summation' 
+)
+{ after(grammarAccess.getSqlAggregationEnumAccess().getSUMEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getSqlAggregationEnumAccess().getCOUNTEnumLiteralDeclaration_2()); }
+(	'count' 
+)
+{ after(grammarAccess.getSqlAggregationEnumAccess().getCOUNTEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValueScaleEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXISEnumLiteralDeclaration_0()); }
+(	'group1' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXISEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS2EnumLiteralDeclaration_1()); }
+(	'group2' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS2EnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS3EnumLiteralDeclaration_2()); }
+(	'group3' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS3EnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS4EnumLiteralDeclaration_3()); }
+(	'group4' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS4EnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS5EnumLiteralDeclaration_4()); }
+(	'group5' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS5EnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS6EnumLiteralDeclaration_5()); }
+(	'group6' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS6EnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS7EnumLiteralDeclaration_6()); }
+(	'group7' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS7EnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS8EnumLiteralDeclaration_7()); }
+(	'group8' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS8EnumLiteralDeclaration_7()); }
+)
+
+    |(
+{ before(grammarAccess.getValueScaleEnumAccess().getAXIS9EnumLiteralDeclaration_8()); }
+(	'group9' 
+)
+{ after(grammarAccess.getValueScaleEnumAccess().getAXIS9EnumLiteralDeclaration_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TaskQueryTopicEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getQ1EnumLiteralDeclaration_0()); }
+(	'BusinessAdministrator' 
+)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getQ1EnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getQ2EnumLiteralDeclaration_1()); }
+(	'PotentialOwner' 
+)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getQ2EnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getQ3EnumLiteralDeclaration_2()); }
+(	'Recipient' 
+)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getQ3EnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getQ4EnumLiteralDeclaration_3()); }
+(	'TaskInitiator' 
+)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getQ4EnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getQ5EnumLiteralDeclaration_4()); }
+(	'TaskStakeholder' 
+)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getQ5EnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryTopicEnumAccess().getQ6EnumLiteralDeclaration_5()); }
+(	'ExcludedOwner' 
+)
+{ after(grammarAccess.getTaskQueryTopicEnumAccess().getQ6EnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TaskQueryColumnEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP1EnumLiteralDeclaration_0()); }
+(	'Name' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP1EnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP2EnumLiteralDeclaration_1()); }
+(	'Priority' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP2EnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP3EnumLiteralDeclaration_2()); }
+(	'Status' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP3EnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP4EnumLiteralDeclaration_3()); }
+(	'Subject' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP4EnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP5EnumLiteralDeclaration_4()); }
+(	'Description' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP5EnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP6EnumLiteralDeclaration_5()); }
+(	'ExpirationTime' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP6EnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP7EnumLiteralDeclaration_6()); }
+(	'CreatedOn' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP7EnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP8EnumLiteralDeclaration_7()); }
+(	'CreatedBy' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP8EnumLiteralDeclaration_7()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP9EnumLiteralDeclaration_8()); }
+(	'ActivationTime' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP9EnumLiteralDeclaration_8()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP10EnumLiteralDeclaration_9()); }
+(	'ActualOwner' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP10EnumLiteralDeclaration_9()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP11EnumLiteralDeclaration_10()); }
+(	'TaskId' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP11EnumLiteralDeclaration_10()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP12EnumLiteralDeclaration_11()); }
+(	'ProcessId' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP12EnumLiteralDeclaration_11()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP13EnumLiteralDeclaration_12()); }
+(	'ProcessInstanceId' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP13EnumLiteralDeclaration_12()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskQueryColumnEnumAccess().getP14EnumLiteralDeclaration_13()); }
+(	'ProcessSessionId' 
+)
+{ after(grammarAccess.getTaskQueryColumnEnumAccess().getP14EnumLiteralDeclaration_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TaskFilterEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTaskFilterEnumAccess().getF1EnumLiteralDeclaration_0()); }
+(	'Groups' 
+)
+{ after(grammarAccess.getTaskFilterEnumAccess().getF1EnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTaskFilterEnumAccess().getF2EnumLiteralDeclaration_1()); }
+(	'Users' 
+)
+{ after(grammarAccess.getTaskFilterEnumAccess().getF2EnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OrderEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOrderEnumAccess().getASCEnumLiteralDeclaration_0()); }
+(	'ascending' 
+)
+{ after(grammarAccess.getOrderEnumAccess().getASCEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOrderEnumAccess().getDESCEnumLiteralDeclaration_1()); }
+(	'descending' 
+)
+{ after(grammarAccess.getOrderEnumAccess().getDESCEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__DatamartPackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group__0__Impl
+	rule__DatamartPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getDatamartPackageAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDatamartPackageAccess().getDatamartPackageAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartPackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group__1__Impl
+	rule__DatamartPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getPackageKeyword_1()); }
+
+	'package' 
+
+{ after(grammarAccess.getDatamartPackageAccess().getPackageKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartPackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group__2__Impl
+	rule__DatamartPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getNameAssignment_2()); }
+(rule__DatamartPackage__NameAssignment_2)
+{ after(grammarAccess.getDatamartPackageAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartPackage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getGroup_3()); }
+(rule__DatamartPackage__Group_3__0)?
+{ after(grammarAccess.getDatamartPackageAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartPackage__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group_3__0__Impl
+	rule__DatamartPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartPackage__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group_3__1__Impl
+	rule__DatamartPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getImportsAssignment_3_1()); }
+(rule__DatamartPackage__ImportsAssignment_3_1)*
+{ after(grammarAccess.getDatamartPackageAccess().getImportsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartPackage__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group_3__2__Impl
+	rule__DatamartPackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getDefinitionsAssignment_3_2()); }
+(rule__DatamartPackage__DefinitionsAssignment_3_2)*
+{ after(grammarAccess.getDatamartPackageAccess().getDefinitionsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartPackage__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartPackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartPackage__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartDefinition__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group__0__Impl
+	rule__DatamartDefinition__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getDatamartKeyword_0()); }
+
+	'datamart' 
+
+{ after(grammarAccess.getDatamartDefinitionAccess().getDatamartKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group__1__Impl
+	rule__DatamartDefinition__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getNameAssignment_1()); }
+(rule__DatamartDefinition__NameAssignment_1)
+{ after(grammarAccess.getDatamartDefinitionAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group__2__Impl
+	rule__DatamartDefinition__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getGroup_2()); }
+(rule__DatamartDefinition__Group_2__0)?
+{ after(grammarAccess.getDatamartDefinitionAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group__3__Impl
+	rule__DatamartDefinition__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getGroup_3()); }
+(rule__DatamartDefinition__Group_3__0)?
+{ after(grammarAccess.getDatamartDefinitionAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group__4__Impl
+	rule__DatamartDefinition__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getUsingKeyword_4()); }
+
+	'using' 
+
+{ after(grammarAccess.getDatamartDefinitionAccess().getUsingKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getSourceAssignment_5()); }
+(rule__DatamartDefinition__SourceAssignment_5)
+{ after(grammarAccess.getDatamartDefinitionAccess().getSourceAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DatamartDefinition__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group_2__0__Impl
+	rule__DatamartDefinition__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getDescriptionAssignment_2_0()); }
+(rule__DatamartDefinition__DescriptionAssignment_2_0)
+{ after(grammarAccess.getDatamartDefinitionAccess().getDescriptionAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getDescriptionValueAssignment_2_1()); }
+(rule__DatamartDefinition__DescriptionValueAssignment_2_1)
+{ after(grammarAccess.getDatamartDefinitionAccess().getDescriptionValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DatamartDefinition__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group_3__0__Impl
+	rule__DatamartDefinition__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getForKeyword_3_0()); }
+
+	'for' 
+
+{ after(grammarAccess.getDatamartDefinitionAccess().getForKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group_3__1__Impl
+	rule__DatamartDefinition__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartDefinitionAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group_3__2__Impl
+	rule__DatamartDefinition__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getRolesAssignment_3_2()); }
+(rule__DatamartDefinition__RolesAssignment_3_2)*
+{ after(grammarAccess.getDatamartDefinitionAccess().getRolesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartDefinition__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartDefinition__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartDefinition__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartDefinitionAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartDefinitionAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartRole__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartRole__Group__0__Impl
+	rule__DatamartRole__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartRole__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartRoleAccess().getRoleKeyword_0()); }
+
+	'role' 
+
+{ after(grammarAccess.getDatamartRoleAccess().getRoleKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartRole__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartRole__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartRole__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartRoleAccess().getAssignedRoleAssignment_1()); }
+(rule__DatamartRole__AssignedRoleAssignment_1)
+{ after(grammarAccess.getDatamartRoleAccess().getAssignedRoleAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DatamartTask__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group__0__Impl
+	rule__DatamartTask__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getTaskKeyword_0()); }
+
+	'task' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getTaskKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group__1__Impl
+	rule__DatamartTask__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getTaskQueryAssignment_1()); }
+(rule__DatamartTask__TaskQueryAssignment_1)
+{ after(grammarAccess.getDatamartTaskAccess().getTaskQueryAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group__2__Impl
+	rule__DatamartTask__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getGroup_2()); }
+(rule__DatamartTask__Group_2__0)?
+{ after(grammarAccess.getDatamartTaskAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getGroup_3()); }
+(rule__DatamartTask__Group_3__0)?
+{ after(grammarAccess.getDatamartTaskAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartTask__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_2__0__Impl
+	rule__DatamartTask__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getColumnsKeyword_2_0()); }
+
+	'columns' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getColumnsKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_2__1__Impl
+	rule__DatamartTask__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_2_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_2__2__Impl
+	rule__DatamartTask__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getColumnsAssignment_2_2()); }
+(rule__DatamartTask__ColumnsAssignment_2_2)*
+{ after(grammarAccess.getDatamartTaskAccess().getColumnsAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_2_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartTask__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_3__0__Impl
+	rule__DatamartTask__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getConditionsKeyword_3_0()); }
+
+	'conditions' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getConditionsKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_3__1__Impl
+	rule__DatamartTask__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_3__2__Impl
+	rule__DatamartTask__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getConditionsAssignment_3_2()); }
+(rule__DatamartTask__ConditionsAssignment_3_2)*
+{ after(grammarAccess.getDatamartTaskAccess().getConditionsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTask__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTask__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTask__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartColumn__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartColumn__Group__0__Impl
+	rule__DatamartColumn__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartColumn__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartColumnAccess().getColumnKeyword_0()); }
+
+	'column' 
+
+{ after(grammarAccess.getDatamartColumnAccess().getColumnKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartColumn__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartColumn__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartColumn__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartColumnAccess().getColumnRefAssignment_1()); }
+(rule__DatamartColumn__ColumnRefAssignment_1)
+{ after(grammarAccess.getDatamartColumnAccess().getColumnRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DatamartTaskFilter__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTaskFilter__Group__0__Impl
+	rule__DatamartTaskFilter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTaskFilter__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskFilterAccess().getFilterKeyword_0()); }
+
+	'filter' 
+
+{ after(grammarAccess.getDatamartTaskFilterAccess().getFilterKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartTaskFilter__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartTaskFilter__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartTaskFilter__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartTaskFilterAccess().getFilterRefAssignment_1()); }
+(rule__DatamartTaskFilter__FilterRefAssignment_1)
+{ after(grammarAccess.getDatamartTaskFilterAccess().getFilterRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DatamartCube__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartCube__Group__0__Impl
+	rule__DatamartCube__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCube__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getCubeKeyword_0()); }
+
+	'cube' 
+
+{ after(grammarAccess.getDatamartCubeAccess().getCubeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartCube__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartCube__Group__1__Impl
+	rule__DatamartCube__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCube__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getCubeRefAssignment_1()); }
+(rule__DatamartCube__CubeRefAssignment_1)
+{ after(grammarAccess.getDatamartCubeAccess().getCubeRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartCube__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartCube__Group__2__Impl
+	rule__DatamartCube__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCube__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getNonEmptyAssignment_2()); }
+(rule__DatamartCube__NonEmptyAssignment_2)?
+{ after(grammarAccess.getDatamartCubeAccess().getNonEmptyAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartCube__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartCube__Group__3__Impl
+	rule__DatamartCube__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCube__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartCubeAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartCube__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartCube__Group__4__Impl
+	rule__DatamartCube__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCube__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getAxisslicerAssignment_4()); }
+(rule__DatamartCube__AxisslicerAssignment_4)*
+{ after(grammarAccess.getDatamartCubeAccess().getAxisslicerAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartCube__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartCube__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartCube__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartCubeAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartCubeAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DatamartReference__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartReference__Group__0__Impl
+	rule__DatamartReference__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartReference__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartReferenceAccess().getJoinKeyword_0()); }
+
+	'join' 
+
+{ after(grammarAccess.getDatamartReferenceAccess().getJoinKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartReference__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartReference__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartReference__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartReferenceAccess().getRefAssignment_1()); }
+(rule__DatamartReference__RefAssignment_1)
+{ after(grammarAccess.getDatamartReferenceAccess().getRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DatamartEntity__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__0__Impl
+	rule__DatamartEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getEntityKeyword_0()); }
+
+	'entity' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getEntityKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__1__Impl
+	rule__DatamartEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getEntityRefAssignment_1()); }
+(rule__DatamartEntity__EntityRefAssignment_1)
+{ after(grammarAccess.getDatamartEntityAccess().getEntityRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__2__Impl
+	rule__DatamartEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getTrackingAssignment_2()); }
+(rule__DatamartEntity__TrackingAssignment_2)?
+{ after(grammarAccess.getDatamartEntityAccess().getTrackingAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__3__Impl
+	rule__DatamartEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__4__Impl
+	rule__DatamartEntity__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getGroup_4()); }
+(rule__DatamartEntity__Group_4__0)?
+{ after(grammarAccess.getDatamartEntityAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__5__Impl
+	rule__DatamartEntity__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getGroup_5()); }
+(rule__DatamartEntity__Group_5__0)?
+{ after(grammarAccess.getDatamartEntityAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__6__Impl
+	rule__DatamartEntity__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getGroup_6()); }
+(rule__DatamartEntity__Group_6__0)?
+{ after(grammarAccess.getDatamartEntityAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__7__Impl
+	rule__DatamartEntity__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getGroup_7()); }
+(rule__DatamartEntity__Group_7__0)?
+{ after(grammarAccess.getDatamartEntityAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__8__Impl
+	rule__DatamartEntity__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getGroup_8()); }
+(rule__DatamartEntity__Group_8__0)?
+{ after(grammarAccess.getDatamartEntityAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DatamartEntity__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_4__0__Impl
+	rule__DatamartEntity__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getNavigationKeyword_4_0()); }
+
+	'navigation' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getNavigationKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_4__1__Impl
+	rule__DatamartEntity__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_4__2__Impl
+	rule__DatamartEntity__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getNavigationsAssignment_4_2()); }
+(rule__DatamartEntity__NavigationsAssignment_4_2)*
+{ after(grammarAccess.getDatamartEntityAccess().getNavigationsAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_4__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_4_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartEntity__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_5__0__Impl
+	rule__DatamartEntity__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getPropertiesKeyword_5_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getPropertiesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_5__1__Impl
+	rule__DatamartEntity__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_5__2__Impl
+	rule__DatamartEntity__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getPropertiesAssignment_5_2()); }
+(rule__DatamartEntity__PropertiesAssignment_5_2)*
+{ after(grammarAccess.getDatamartEntityAccess().getPropertiesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_5__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_5_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartEntity__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_6__0__Impl
+	rule__DatamartEntity__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getConditionsKeyword_6_0()); }
+
+	'conditions' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getConditionsKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_6__1__Impl
+	rule__DatamartEntity__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_6__2__Impl
+	rule__DatamartEntity__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getConditionsAssignment_6_2()); }
+(rule__DatamartEntity__ConditionsAssignment_6_2)*
+{ after(grammarAccess.getDatamartEntityAccess().getConditionsAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_6__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_6_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartEntity__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_7__0__Impl
+	rule__DatamartEntity__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getOrderingKeyword_7_0()); }
+
+	'ordering' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getOrderingKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_7__1__Impl
+	rule__DatamartEntity__Group_7__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_7_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_7__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_7__2__Impl
+	rule__DatamartEntity__Group_7__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_7__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getOrderingAssignment_7_2()); }
+(rule__DatamartEntity__OrderingAssignment_7_2)*
+{ after(grammarAccess.getDatamartEntityAccess().getOrderingAssignment_7_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_7__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_7__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_7__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_7_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_7_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartEntity__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__0__Impl
+	rule__DatamartEntity__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getFillerRowsKeyword_8_0()); }
+
+	'filler rows' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getFillerRowsKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__1__Impl
+	rule__DatamartEntity__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getFillerMinCountRowsAssignment_8_1()); }
+(rule__DatamartEntity__FillerMinCountRowsAssignment_8_1)
+{ after(grammarAccess.getDatamartEntityAccess().getFillerMinCountRowsAssignment_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__2__Impl
+	rule__DatamartEntity__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getToKeyword_8_2()); }
+
+	'to' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getToKeyword_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__3__Impl
+	rule__DatamartEntity__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getFillerMaxCountRowsAssignment_8_3()); }
+(rule__DatamartEntity__FillerMaxCountRowsAssignment_8_3)
+{ after(grammarAccess.getDatamartEntityAccess().getFillerMaxCountRowsAssignment_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__4__Impl
+	rule__DatamartEntity__Group_8__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_8_4()); }
+
+	'{' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_8__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__5__Impl
+	rule__DatamartEntity__Group_8__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getFillerDatasAssignment_8_5()); }
+(rule__DatamartEntity__FillerDatasAssignment_8_5)*
+{ after(grammarAccess.getDatamartEntityAccess().getFillerDatasAssignment_8_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartEntity__Group_8__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartEntity__Group_8__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartEntity__Group_8__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_8_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_8_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DatamartOwner__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartOwner__Group__0__Impl
+	rule__DatamartOwner__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartOwner__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartOwnerAccess().getManyToOneKeyword_0()); }
+
+	'many to one' 
+
+{ after(grammarAccess.getDatamartOwnerAccess().getManyToOneKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartOwner__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartOwner__Group__1__Impl
+	rule__DatamartOwner__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartOwner__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartOwnerAccess().getJoinRefAssignment_1()); }
+(rule__DatamartOwner__JoinRefAssignment_1)
+{ after(grammarAccess.getDatamartOwnerAccess().getJoinRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartOwner__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartOwner__Group__2__Impl
+	rule__DatamartOwner__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartOwner__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartOwnerAccess().getToKeyword_2()); }
+
+	'to' 
+
+{ after(grammarAccess.getDatamartOwnerAccess().getToKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartOwner__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartOwner__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartOwner__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartOwnerAccess().getDatamartEntityAssignment_3()); }
+(rule__DatamartOwner__DatamartEntityAssignment_3)
+{ after(grammarAccess.getDatamartOwnerAccess().getDatamartEntityAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartMember__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartMember__Group__0__Impl
+	rule__DatamartMember__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartMember__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartMemberAccess().getOneToManyKeyword_0()); }
+
+	'one to many' 
+
+{ after(grammarAccess.getDatamartMemberAccess().getOneToManyKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartMember__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartMember__Group__1__Impl
+	rule__DatamartMember__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartMember__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartMemberAccess().getJoinRefAssignment_1()); }
+(rule__DatamartMember__JoinRefAssignment_1)
+{ after(grammarAccess.getDatamartMemberAccess().getJoinRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartMember__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartMember__Group__2__Impl
+	rule__DatamartMember__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartMember__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartMemberAccess().getToKeyword_2()); }
+
+	'to' 
+
+{ after(grammarAccess.getDatamartMemberAccess().getToKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartMember__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartMember__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartMember__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartMemberAccess().getDatamartEntityAssignment_3()); }
+(rule__DatamartMember__DatamartEntityAssignment_3)
+{ after(grammarAccess.getDatamartMemberAccess().getDatamartEntityAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DatamartProperty__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartProperty__Group__0__Impl
+	rule__DatamartProperty__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartProperty__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPropertyAccess().getPropertyKeyword_0()); }
+
+	'property' 
+
+{ after(grammarAccess.getDatamartPropertyAccess().getPropertyKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartProperty__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartProperty__Group__1__Impl
+	rule__DatamartProperty__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartProperty__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPropertyAccess().getPropertyRefAssignment_1()); }
+(rule__DatamartProperty__PropertyRefAssignment_1)
+{ after(grammarAccess.getDatamartPropertyAccess().getPropertyRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DatamartProperty__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DatamartProperty__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatamartProperty__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2()); }
+(rule__DatamartProperty__UnorderedGroup_2)
+{ after(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.tokens b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.tokens
new file mode 100644
index 0000000..f17f041
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.tokens
@@ -0,0 +1,415 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=175
+'%'=39
+'%='=20
+'&&'=15
+'&'=197
+'('=139
+')'=140
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=173
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=183
+'::'=211
+';'=179
+'<'=27
+'<='=77
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=196
+'?.'=212
+'?:'=33
+'@'=172
+'ActivationTime'=103
+'ActualOwner'=104
+'BusinessAdministrator'=89
+'CreatedBy'=102
+'CreatedOn'=101
+'Description'=99
+'ExcludedOwner'=94
+'ExpirationTime'=100
+'Groups'=109
+'Name'=95
+'PotentialOwner'=90
+'Priority'=96
+'ProcessId'=106
+'ProcessInstanceId'=107
+'ProcessSessionId'=108
+'Recipient'=91
+'Status'=97
+'Subject'=98
+'TaskId'=105
+'TaskInitiator'=92
+'TaskStakeholder'=93
+'Users'=110
+'['=176
+']'=174
+'aggregate'=75
+'and'=138
+'as'=178
+'ascending'=111
+'average'=73
+'axis'=146
+'bottomcount'=70
+'bottompercentage'=72
+'bottomsummation'=71
+'case'=184
+'catch'=195
+'chapters'=56
+'column'=122
+'columns'=52
+'condensed'=206
+'condition'=135
+'conditions'=121
+'count'=79
+'cube'=124
+'datamart'=116
+'decimals'=159
+'default'=51
+'derive'=141
+'derived'=147
+'descending'=112
+'described by'=198
+'detailed'=208
+'deviation'=76
+'do'=186
+'else'=181
+'entity'=126
+'except'=209
+'exploded'=207
+'extends'=45
+'extension'=48
+'false'=50
+'fill'=151
+'filler rows'=130
+'filler-date future'=153
+'filler-date past'=155
+'filler-date range'=156
+'filler-signed-double random'=161
+'filler-signed-double range'=158
+'filler-signed-integer random'=163
+'filler-signed-integer range'=162
+'filler-text paragraps'=165
+'filler-text random'=164
+'filler-text sentences'=166
+'filler-text words'=167
+'filler-unsigned-double random'=169
+'filler-unsigned-double range'=168
+'filler-unsigned-integer random'=171
+'filler-unsigned-integer range'=170
+'filter'=123
+'filtered'=203
+'finally'=193
+'first'=59
+'for'=118
+'from'=142
+'group1'=80
+'group2'=81
+'group3'=82
+'group4'=83
+'group5'=84
+'group6'=85
+'group7'=86
+'group8'=87
+'group9'=88
+'head'=66
+'hierarchy'=149
+'if'=180
+'import'=47
+'instanceof'=177
+'join'=125
+'lag'=61
+'last'=60
+'lead'=62
+'level'=150
+'like'=78
+'many to one'=132
+'measure'=148
+'navigation'=127
+'new'=187
+'next'=58
+'nonempty values'=199
+'null'=188
+'of'=143
+'on axis'=201
+'one to many'=133
+'optional'=204
+'or'=137
+'order'=136
+'ordered by'=210
+'ordering'=129
+'over'=144
+'package'=113
+'pages'=54
+'periods'=64
+'previous'=57
+'properties'=128
+'property'=134
+'return'=191
+'role'=119
+'round to'=160
+'rows'=53
+'scale'=202
+'sections'=55
+'selected'=205
+'slicer'=145
+'static'=46
+'summation'=74
+'super'=49
+'switch'=182
+'synchronized'=194
+'tail'=65
+'task'=120
+'throw'=190
+'to'=131
+'topcount'=67
+'toppercentage'=69
+'topsummation'=68
+'tracking'=200
+'true'=215
+'try'=192
+'typeof'=189
+'up to and including'=157
+'using'=117
+'val'=44
+'var'=214
+'while'=185
+'with'=152
+'year-to-date'=63
+'years'=154
+'{'=114
+'|'=213
+'||'=14
+'}'=115
+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__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
+T__159=159
+T__15=15
+T__160=160
+T__161=161
+T__162=162
+T__163=163
+T__164=164
+T__165=165
+T__166=166
+T__167=167
+T__168=168
+T__169=169
+T__16=16
+T__170=170
+T__171=171
+T__172=172
+T__173=173
+T__174=174
+T__175=175
+T__176=176
+T__177=177
+T__178=178
+T__179=179
+T__17=17
+T__180=180
+T__181=181
+T__182=182
+T__183=183
+T__184=184
+T__185=185
+T__186=186
+T__187=187
+T__188=188
+T__189=189
+T__18=18
+T__190=190
+T__191=191
+T__192=192
+T__193=193
+T__194=194
+T__195=195
+T__196=196
+T__197=197
+T__198=198
+T__199=199
+T__19=19
+T__200=200
+T__201=201
+T__202=202
+T__203=203
+T__204=204
+T__205=205
+T__206=206
+T__207=207
+T__208=208
+T__209=209
+T__20=20
+T__210=210
+T__211=211
+T__212=212
+T__213=213
+T__214=214
+T__215=215
+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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSLLexer.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSLLexer.java
new file mode 100644
index 0000000..9a0a3fc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSLLexer.java
@@ -0,0 +1,8432 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 InternalDatamartDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    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__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    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 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__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    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__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    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__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__100=100;
+    public static final int T__102=102;
+    public static final int T__101=101;
+    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__13=13;
+    public static final int T__14=14;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__121=121;
+    public static final int T__124=124;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__117=117;
+    public static final int T__116=116;
+    public static final int T__111=111;
+    public static final int T__110=110;
+    public static final int T__113=113;
+    public static final int T__112=112;
+    public static final int T__108=108;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__103=103;
+    public static final int T__106=106;
+    public static final int T__105=105;
+    public static final int RULE_HEX=6;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    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 T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=5;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+    public InternalDatamartDSLLexer() {;} 
+    public InternalDatamartDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDatamartDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:14:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:15:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:16:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:17:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:18:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:19:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:20:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:21:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:22:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:23:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:24:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:25:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:26:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:27:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:28:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:29:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:30:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:31:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:32:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:33:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:34:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:35:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:36:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:38:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:39:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:40:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:41:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:42:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:42:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:43:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:43:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:44:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:44:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:45:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:45:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:46:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:46:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:47:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:47:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:48:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:48:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:49:7: ( 'default' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:49:9: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:50:7: ( 'columns' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:50:9: 'columns'
+            {
+            match("columns"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:51:7: ( 'rows' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:51:9: 'rows'
+            {
+            match("rows"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:52:7: ( 'pages' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:52:9: 'pages'
+            {
+            match("pages"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:53:7: ( 'sections' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:53:9: 'sections'
+            {
+            match("sections"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:54:7: ( 'chapters' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:54:9: 'chapters'
+            {
+            match("chapters"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:55:7: ( 'previous' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:55:9: 'previous'
+            {
+            match("previous"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:56:7: ( 'next' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:56:9: 'next'
+            {
+            match("next"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:57:7: ( 'first' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:57:9: 'first'
+            {
+            match("first"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:58:7: ( 'last' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:58:9: 'last'
+            {
+            match("last"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:59:7: ( 'lag' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:59:9: 'lag'
+            {
+            match("lag"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:60:7: ( 'lead' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:60:9: 'lead'
+            {
+            match("lead"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:61:7: ( 'year-to-date' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:61:9: 'year-to-date'
+            {
+            match("year-to-date"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:62:7: ( 'periods' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:62:9: 'periods'
+            {
+            match("periods"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:63:7: ( 'tail' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:63:9: 'tail'
+            {
+            match("tail"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:64:7: ( 'head' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:64:9: 'head'
+            {
+            match("head"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:65:7: ( 'topcount' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:65:9: 'topcount'
+            {
+            match("topcount"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:66:7: ( 'topsummation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:66:9: 'topsummation'
+            {
+            match("topsummation"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:67:7: ( 'toppercentage' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:67:9: 'toppercentage'
+            {
+            match("toppercentage"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:68:7: ( 'bottomcount' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:68:9: 'bottomcount'
+            {
+            match("bottomcount"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:69:7: ( 'bottomsummation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:69:9: 'bottomsummation'
+            {
+            match("bottomsummation"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:70:7: ( 'bottompercentage' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:70:9: 'bottompercentage'
+            {
+            match("bottompercentage"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:71:7: ( 'average' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:71:9: 'average'
+            {
+            match("average"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:72:7: ( 'summation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:72:9: 'summation'
+            {
+            match("summation"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:73:7: ( 'aggregate' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:73:9: 'aggregate'
+            {
+            match("aggregate"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:74:7: ( 'deviation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:74:9: 'deviation'
+            {
+            match("deviation"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:75:7: ( '<=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:76:7: ( 'like' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:76:9: 'like'
+            {
+            match("like"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:77:7: ( 'count' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:77:9: 'count'
+            {
+            match("count"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:78:7: ( 'group1' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:78:9: 'group1'
+            {
+            match("group1"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:79:7: ( 'group2' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:79:9: 'group2'
+            {
+            match("group2"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:80:7: ( 'group3' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:80:9: 'group3'
+            {
+            match("group3"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:81:7: ( 'group4' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:81:9: 'group4'
+            {
+            match("group4"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:82:7: ( 'group5' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:82:9: 'group5'
+            {
+            match("group5"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:83:7: ( 'group6' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:83:9: 'group6'
+            {
+            match("group6"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:84:7: ( 'group7' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:84:9: 'group7'
+            {
+            match("group7"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:85:7: ( 'group8' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:85:9: 'group8'
+            {
+            match("group8"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:86:7: ( 'group9' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:86:9: 'group9'
+            {
+            match("group9"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:87:7: ( 'BusinessAdministrator' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:87:9: 'BusinessAdministrator'
+            {
+            match("BusinessAdministrator"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:88:7: ( 'PotentialOwner' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:88:9: 'PotentialOwner'
+            {
+            match("PotentialOwner"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:89:7: ( 'Recipient' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:89:9: 'Recipient'
+            {
+            match("Recipient"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:90:7: ( 'TaskInitiator' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:90:9: 'TaskInitiator'
+            {
+            match("TaskInitiator"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:91:7: ( 'TaskStakeholder' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:91:9: 'TaskStakeholder'
+            {
+            match("TaskStakeholder"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:92:7: ( 'ExcludedOwner' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:92:9: 'ExcludedOwner'
+            {
+            match("ExcludedOwner"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:93:7: ( 'Name' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:93:9: 'Name'
+            {
+            match("Name"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:94:7: ( 'Priority' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:94:9: 'Priority'
+            {
+            match("Priority"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:95:7: ( 'Status' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:95:9: 'Status'
+            {
+            match("Status"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:96:7: ( 'Subject' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:96:9: 'Subject'
+            {
+            match("Subject"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:97:7: ( 'Description' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:97:9: 'Description'
+            {
+            match("Description"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:98:8: ( 'ExpirationTime' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:98:10: 'ExpirationTime'
+            {
+            match("ExpirationTime"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:99:8: ( 'CreatedOn' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:99:10: 'CreatedOn'
+            {
+            match("CreatedOn"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:100:8: ( 'CreatedBy' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:100:10: 'CreatedBy'
+            {
+            match("CreatedBy"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:101:8: ( 'ActivationTime' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:101:10: 'ActivationTime'
+            {
+            match("ActivationTime"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:102:8: ( 'ActualOwner' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:102:10: 'ActualOwner'
+            {
+            match("ActualOwner"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:103:8: ( 'TaskId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:103:10: 'TaskId'
+            {
+            match("TaskId"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:104:8: ( 'ProcessId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:104:10: 'ProcessId'
+            {
+            match("ProcessId"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:105:8: ( 'ProcessInstanceId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:105:10: 'ProcessInstanceId'
+            {
+            match("ProcessInstanceId"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:106:8: ( 'ProcessSessionId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:106:10: 'ProcessSessionId'
+            {
+            match("ProcessSessionId"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:107:8: ( 'Groups' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:107:10: 'Groups'
+            {
+            match("Groups"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:108:8: ( 'Users' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:108:10: 'Users'
+            {
+            match("Users"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:109:8: ( 'ascending' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:109:10: 'ascending'
+            {
+            match("ascending"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:110:8: ( 'descending' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:110:10: 'descending'
+            {
+            match("descending"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:111:8: ( 'package' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:111:10: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:112:8: ( '{' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:113:8: ( '}' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:114:8: ( 'datamart' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:114:10: 'datamart'
+            {
+            match("datamart"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:115:8: ( 'using' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:115:10: 'using'
+            {
+            match("using"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:116:8: ( 'for' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:116:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:117:8: ( 'role' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:117:10: 'role'
+            {
+            match("role"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:118:8: ( 'task' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:118:10: 'task'
+            {
+            match("task"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:119:8: ( 'conditions' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:119:10: 'conditions'
+            {
+            match("conditions"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:120:8: ( 'column' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:120:10: 'column'
+            {
+            match("column"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:121:8: ( 'filter' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:121:10: 'filter'
+            {
+            match("filter"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:122:8: ( 'cube' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:122:10: 'cube'
+            {
+            match("cube"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:123:8: ( 'join' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:123:10: 'join'
+            {
+            match("join"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:124:8: ( 'entity' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:124:10: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:125:8: ( 'navigation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:125:10: 'navigation'
+            {
+            match("navigation"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:126:8: ( 'properties' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:126:10: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:127:8: ( 'ordering' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:127:10: 'ordering'
+            {
+            match("ordering"); 
+
+
+            }
+
+            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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:128:8: ( 'filler rows' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:128:10: 'filler rows'
+            {
+            match("filler rows"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:129:8: ( 'to' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:129:10: 'to'
+            {
+            match("to"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:130:8: ( 'many to one' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:130:10: 'many to one'
+            {
+            match("many to one"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:131:8: ( 'one to many' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:131:10: 'one to many'
+            {
+            match("one to many"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:132:8: ( 'property' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:132:10: 'property'
+            {
+            match("property"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:133:8: ( 'condition' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:133:10: 'condition'
+            {
+            match("condition"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:134:8: ( 'order' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:134:10: 'order'
+            {
+            match("order"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:135:8: ( 'or' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:135:10: 'or'
+            {
+            match("or"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:136:8: ( 'and' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:136:10: 'and'
+            {
+            match("and"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:137:8: ( '(' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:137:10: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:138:8: ( ')' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:138:10: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "T__141"
+    public final void mT__141() throws RecognitionException {
+        try {
+            int _type = T__141;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:139:8: ( 'derive' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:139:10: 'derive'
+            {
+            match("derive"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:140:8: ( 'from' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:140:10: 'from'
+            {
+            match("from"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:141:8: ( 'of' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:141:10: 'of'
+            {
+            match("of"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:142:8: ( 'over' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:142:10: 'over'
+            {
+            match("over"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:143:8: ( 'slicer' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:143:10: 'slicer'
+            {
+            match("slicer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__145"
+
+    // $ANTLR start "T__146"
+    public final void mT__146() throws RecognitionException {
+        try {
+            int _type = T__146;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:144:8: ( 'axis' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:144:10: 'axis'
+            {
+            match("axis"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__146"
+
+    // $ANTLR start "T__147"
+    public final void mT__147() throws RecognitionException {
+        try {
+            int _type = T__147;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:145:8: ( 'derived' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:145:10: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__147"
+
+    // $ANTLR start "T__148"
+    public final void mT__148() throws RecognitionException {
+        try {
+            int _type = T__148;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:146:8: ( 'measure' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:146:10: 'measure'
+            {
+            match("measure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__148"
+
+    // $ANTLR start "T__149"
+    public final void mT__149() throws RecognitionException {
+        try {
+            int _type = T__149;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:147:8: ( 'hierarchy' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:147:10: 'hierarchy'
+            {
+            match("hierarchy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__149"
+
+    // $ANTLR start "T__150"
+    public final void mT__150() throws RecognitionException {
+        try {
+            int _type = T__150;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:148:8: ( 'level' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:148:10: 'level'
+            {
+            match("level"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__150"
+
+    // $ANTLR start "T__151"
+    public final void mT__151() throws RecognitionException {
+        try {
+            int _type = T__151;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:149:8: ( 'fill' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:149:10: 'fill'
+            {
+            match("fill"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:150:8: ( 'with' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:150:10: 'with'
+            {
+            match("with"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:151:8: ( 'filler-date future' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:151:10: 'filler-date future'
+            {
+            match("filler-date future"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:152:8: ( 'years' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:152:10: 'years'
+            {
+            match("years"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "T__155"
+    public final void mT__155() throws RecognitionException {
+        try {
+            int _type = T__155;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:153:8: ( 'filler-date past' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:153:10: 'filler-date past'
+            {
+            match("filler-date past"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "T__156"
+    public final void mT__156() throws RecognitionException {
+        try {
+            int _type = T__156;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:154:8: ( 'filler-date range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:154:10: 'filler-date range'
+            {
+            match("filler-date range"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__156"
+
+    // $ANTLR start "T__157"
+    public final void mT__157() throws RecognitionException {
+        try {
+            int _type = T__157;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:155:8: ( 'up to and including' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:155:10: 'up to and including'
+            {
+            match("up to and including"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__157"
+
+    // $ANTLR start "T__158"
+    public final void mT__158() throws RecognitionException {
+        try {
+            int _type = T__158;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:156:8: ( 'filler-signed-double range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:156:10: 'filler-signed-double range'
+            {
+            match("filler-signed-double range"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__158"
+
+    // $ANTLR start "T__159"
+    public final void mT__159() throws RecognitionException {
+        try {
+            int _type = T__159;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:157:8: ( 'decimals' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:157:10: 'decimals'
+            {
+            match("decimals"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__159"
+
+    // $ANTLR start "T__160"
+    public final void mT__160() throws RecognitionException {
+        try {
+            int _type = T__160;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:158:8: ( 'round to' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:158:10: 'round to'
+            {
+            match("round to"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__160"
+
+    // $ANTLR start "T__161"
+    public final void mT__161() throws RecognitionException {
+        try {
+            int _type = T__161;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:159:8: ( 'filler-signed-double random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:159:10: 'filler-signed-double random'
+            {
+            match("filler-signed-double random"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__161"
+
+    // $ANTLR start "T__162"
+    public final void mT__162() throws RecognitionException {
+        try {
+            int _type = T__162;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:160:8: ( 'filler-signed-integer range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:160:10: 'filler-signed-integer range'
+            {
+            match("filler-signed-integer range"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__162"
+
+    // $ANTLR start "T__163"
+    public final void mT__163() throws RecognitionException {
+        try {
+            int _type = T__163;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:161:8: ( 'filler-signed-integer random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:161:10: 'filler-signed-integer random'
+            {
+            match("filler-signed-integer random"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__163"
+
+    // $ANTLR start "T__164"
+    public final void mT__164() throws RecognitionException {
+        try {
+            int _type = T__164;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:162:8: ( 'filler-text random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:162:10: 'filler-text random'
+            {
+            match("filler-text random"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__164"
+
+    // $ANTLR start "T__165"
+    public final void mT__165() throws RecognitionException {
+        try {
+            int _type = T__165;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:163:8: ( 'filler-text paragraps' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:163:10: 'filler-text paragraps'
+            {
+            match("filler-text paragraps"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__165"
+
+    // $ANTLR start "T__166"
+    public final void mT__166() throws RecognitionException {
+        try {
+            int _type = T__166;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:164:8: ( 'filler-text sentences' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:164:10: 'filler-text sentences'
+            {
+            match("filler-text sentences"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__166"
+
+    // $ANTLR start "T__167"
+    public final void mT__167() throws RecognitionException {
+        try {
+            int _type = T__167;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:165:8: ( 'filler-text words' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:165:10: 'filler-text words'
+            {
+            match("filler-text words"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__167"
+
+    // $ANTLR start "T__168"
+    public final void mT__168() throws RecognitionException {
+        try {
+            int _type = T__168;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:166:8: ( 'filler-unsigned-double range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:166:10: 'filler-unsigned-double range'
+            {
+            match("filler-unsigned-double range"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__168"
+
+    // $ANTLR start "T__169"
+    public final void mT__169() throws RecognitionException {
+        try {
+            int _type = T__169;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:167:8: ( 'filler-unsigned-double random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:167:10: 'filler-unsigned-double random'
+            {
+            match("filler-unsigned-double random"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__169"
+
+    // $ANTLR start "T__170"
+    public final void mT__170() throws RecognitionException {
+        try {
+            int _type = T__170;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:168:8: ( 'filler-unsigned-integer range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:168:10: 'filler-unsigned-integer range'
+            {
+            match("filler-unsigned-integer range"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__170"
+
+    // $ANTLR start "T__171"
+    public final void mT__171() throws RecognitionException {
+        try {
+            int _type = T__171;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:169:8: ( 'filler-unsigned-integer random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:169:10: 'filler-unsigned-integer random'
+            {
+            match("filler-unsigned-integer random"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "T__172"
+    public final void mT__172() throws RecognitionException {
+        try {
+            int _type = T__172;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:170:8: ( '@' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:170:10: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__172"
+
+    // $ANTLR start "T__173"
+    public final void mT__173() throws RecognitionException {
+        try {
+            int _type = T__173;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:171:8: ( ',' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:171:10: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__173"
+
+    // $ANTLR start "T__174"
+    public final void mT__174() throws RecognitionException {
+        try {
+            int _type = T__174;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:172:8: ( ']' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:172:10: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__174"
+
+    // $ANTLR start "T__175"
+    public final void mT__175() throws RecognitionException {
+        try {
+            int _type = T__175;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:173:8: ( '#' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:173:10: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__175"
+
+    // $ANTLR start "T__176"
+    public final void mT__176() throws RecognitionException {
+        try {
+            int _type = T__176;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:174:8: ( '[' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:174:10: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__176"
+
+    // $ANTLR start "T__177"
+    public final void mT__177() throws RecognitionException {
+        try {
+            int _type = T__177;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:175:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:175:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__177"
+
+    // $ANTLR start "T__178"
+    public final void mT__178() throws RecognitionException {
+        try {
+            int _type = T__178;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:176:8: ( 'as' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:176:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__178"
+
+    // $ANTLR start "T__179"
+    public final void mT__179() throws RecognitionException {
+        try {
+            int _type = T__179;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:177:8: ( ';' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:177:10: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__179"
+
+    // $ANTLR start "T__180"
+    public final void mT__180() throws RecognitionException {
+        try {
+            int _type = T__180;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:178:8: ( 'if' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:178:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__180"
+
+    // $ANTLR start "T__181"
+    public final void mT__181() throws RecognitionException {
+        try {
+            int _type = T__181;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:179:8: ( 'else' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:179:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__181"
+
+    // $ANTLR start "T__182"
+    public final void mT__182() throws RecognitionException {
+        try {
+            int _type = T__182;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:180:8: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:180:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__182"
+
+    // $ANTLR start "T__183"
+    public final void mT__183() throws RecognitionException {
+        try {
+            int _type = T__183;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:181:8: ( ':' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:181:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__183"
+
+    // $ANTLR start "T__184"
+    public final void mT__184() throws RecognitionException {
+        try {
+            int _type = T__184;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:182:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:182:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__184"
+
+    // $ANTLR start "T__185"
+    public final void mT__185() throws RecognitionException {
+        try {
+            int _type = T__185;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:183:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:183:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__185"
+
+    // $ANTLR start "T__186"
+    public final void mT__186() throws RecognitionException {
+        try {
+            int _type = T__186;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:184:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:184:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__186"
+
+    // $ANTLR start "T__187"
+    public final void mT__187() throws RecognitionException {
+        try {
+            int _type = T__187;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:185:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:185:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__187"
+
+    // $ANTLR start "T__188"
+    public final void mT__188() throws RecognitionException {
+        try {
+            int _type = T__188;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:186:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:186:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__188"
+
+    // $ANTLR start "T__189"
+    public final void mT__189() throws RecognitionException {
+        try {
+            int _type = T__189;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:187:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:187:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__189"
+
+    // $ANTLR start "T__190"
+    public final void mT__190() throws RecognitionException {
+        try {
+            int _type = T__190;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:188:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:188:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__190"
+
+    // $ANTLR start "T__191"
+    public final void mT__191() throws RecognitionException {
+        try {
+            int _type = T__191;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:189:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:189:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__191"
+
+    // $ANTLR start "T__192"
+    public final void mT__192() throws RecognitionException {
+        try {
+            int _type = T__192;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:190:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:190:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__192"
+
+    // $ANTLR start "T__193"
+    public final void mT__193() throws RecognitionException {
+        try {
+            int _type = T__193;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:191:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:191:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__193"
+
+    // $ANTLR start "T__194"
+    public final void mT__194() throws RecognitionException {
+        try {
+            int _type = T__194;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:192:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:192:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__194"
+
+    // $ANTLR start "T__195"
+    public final void mT__195() throws RecognitionException {
+        try {
+            int _type = T__195;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:193:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:193:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__195"
+
+    // $ANTLR start "T__196"
+    public final void mT__196() throws RecognitionException {
+        try {
+            int _type = T__196;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:194:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:194:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__196"
+
+    // $ANTLR start "T__197"
+    public final void mT__197() throws RecognitionException {
+        try {
+            int _type = T__197;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:195:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:195:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__197"
+
+    // $ANTLR start "T__198"
+    public final void mT__198() throws RecognitionException {
+        try {
+            int _type = T__198;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:196:8: ( 'described by' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:196:10: 'described by'
+            {
+            match("described by"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__198"
+
+    // $ANTLR start "T__199"
+    public final void mT__199() throws RecognitionException {
+        try {
+            int _type = T__199;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:197:8: ( 'nonempty values' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:197:10: 'nonempty values'
+            {
+            match("nonempty values"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__199"
+
+    // $ANTLR start "T__200"
+    public final void mT__200() throws RecognitionException {
+        try {
+            int _type = T__200;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:198:8: ( 'tracking' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:198:10: 'tracking'
+            {
+            match("tracking"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__200"
+
+    // $ANTLR start "T__201"
+    public final void mT__201() throws RecognitionException {
+        try {
+            int _type = T__201;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:199:8: ( 'on axis' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:199:10: 'on axis'
+            {
+            match("on axis"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__201"
+
+    // $ANTLR start "T__202"
+    public final void mT__202() throws RecognitionException {
+        try {
+            int _type = T__202;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:200:8: ( 'scale' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:200:10: 'scale'
+            {
+            match("scale"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__202"
+
+    // $ANTLR start "T__203"
+    public final void mT__203() throws RecognitionException {
+        try {
+            int _type = T__203;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:201:8: ( 'filtered' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:201:10: 'filtered'
+            {
+            match("filtered"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__203"
+
+    // $ANTLR start "T__204"
+    public final void mT__204() throws RecognitionException {
+        try {
+            int _type = T__204;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:202:8: ( 'optional' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:202:10: 'optional'
+            {
+            match("optional"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__204"
+
+    // $ANTLR start "T__205"
+    public final void mT__205() throws RecognitionException {
+        try {
+            int _type = T__205;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:203:8: ( 'selected' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:203:10: 'selected'
+            {
+            match("selected"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__205"
+
+    // $ANTLR start "T__206"
+    public final void mT__206() throws RecognitionException {
+        try {
+            int _type = T__206;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:204:8: ( 'condensed' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:204:10: 'condensed'
+            {
+            match("condensed"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__206"
+
+    // $ANTLR start "T__207"
+    public final void mT__207() throws RecognitionException {
+        try {
+            int _type = T__207;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:205:8: ( 'exploded' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:205:10: 'exploded'
+            {
+            match("exploded"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__207"
+
+    // $ANTLR start "T__208"
+    public final void mT__208() throws RecognitionException {
+        try {
+            int _type = T__208;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:206:8: ( 'detailed' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:206:10: 'detailed'
+            {
+            match("detailed"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__208"
+
+    // $ANTLR start "T__209"
+    public final void mT__209() throws RecognitionException {
+        try {
+            int _type = T__209;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:207:8: ( 'except' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:207:10: 'except'
+            {
+            match("except"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__209"
+
+    // $ANTLR start "T__210"
+    public final void mT__210() throws RecognitionException {
+        try {
+            int _type = T__210;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:208:8: ( 'ordered by' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:208:10: 'ordered by'
+            {
+            match("ordered by"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__210"
+
+    // $ANTLR start "T__211"
+    public final void mT__211() throws RecognitionException {
+        try {
+            int _type = T__211;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:209:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:209:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__211"
+
+    // $ANTLR start "T__212"
+    public final void mT__212() throws RecognitionException {
+        try {
+            int _type = T__212;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:210:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:210:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__212"
+
+    // $ANTLR start "T__213"
+    public final void mT__213() throws RecognitionException {
+        try {
+            int _type = T__213;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:211:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:211:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__213"
+
+    // $ANTLR start "T__214"
+    public final void mT__214() throws RecognitionException {
+        try {
+            int _type = T__214;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:212:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:212:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__214"
+
+    // $ANTLR start "T__215"
+    public final void mT__215() throws RecognitionException {
+        try {
+            int _type = T__215;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:213:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:213:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__215"
+
+    // $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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37122: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37124:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37124:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37124: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37126: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37128:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37128:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37128:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37128: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37128: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37130: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37132:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37132:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37132: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37132: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37134: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37136:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37136:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37136: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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37138:16: ( . )
+            // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:37138:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | T__190 | T__191 | T__192 | T__193 | T__194 | T__195 | T__196 | T__197 | T__198 | T__199 | T__200 | T__201 | T__202 | T__203 | T__204 | T__205 | T__206 | T__207 | T__208 | T__209 | T__210 | T__211 | T__212 | T__213 | T__214 | T__215 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=212;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:924: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:931: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:938: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:945: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:952: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:959: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:966: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:973: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:980: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 153 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:987: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 154 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:994: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 155 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1001: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 156 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1008: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 157 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1015: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 158 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1022: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 159 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1029: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 160 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1036: T__172
+                {
+                mT__172(); 
+
+                }
+                break;
+            case 161 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1043: T__173
+                {
+                mT__173(); 
+
+                }
+                break;
+            case 162 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1050: T__174
+                {
+                mT__174(); 
+
+                }
+                break;
+            case 163 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1057: T__175
+                {
+                mT__175(); 
+
+                }
+                break;
+            case 164 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1064: T__176
+                {
+                mT__176(); 
+
+                }
+                break;
+            case 165 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1071: T__177
+                {
+                mT__177(); 
+
+                }
+                break;
+            case 166 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1078: T__178
+                {
+                mT__178(); 
+
+                }
+                break;
+            case 167 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1085: T__179
+                {
+                mT__179(); 
+
+                }
+                break;
+            case 168 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1092: T__180
+                {
+                mT__180(); 
+
+                }
+                break;
+            case 169 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1099: T__181
+                {
+                mT__181(); 
+
+                }
+                break;
+            case 170 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1106: T__182
+                {
+                mT__182(); 
+
+                }
+                break;
+            case 171 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1113: T__183
+                {
+                mT__183(); 
+
+                }
+                break;
+            case 172 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1120: T__184
+                {
+                mT__184(); 
+
+                }
+                break;
+            case 173 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1127: T__185
+                {
+                mT__185(); 
+
+                }
+                break;
+            case 174 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1134: T__186
+                {
+                mT__186(); 
+
+                }
+                break;
+            case 175 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1141: T__187
+                {
+                mT__187(); 
+
+                }
+                break;
+            case 176 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1148: T__188
+                {
+                mT__188(); 
+
+                }
+                break;
+            case 177 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1155: T__189
+                {
+                mT__189(); 
+
+                }
+                break;
+            case 178 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1162: T__190
+                {
+                mT__190(); 
+
+                }
+                break;
+            case 179 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1169: T__191
+                {
+                mT__191(); 
+
+                }
+                break;
+            case 180 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1176: T__192
+                {
+                mT__192(); 
+
+                }
+                break;
+            case 181 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1183: T__193
+                {
+                mT__193(); 
+
+                }
+                break;
+            case 182 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1190: T__194
+                {
+                mT__194(); 
+
+                }
+                break;
+            case 183 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1197: T__195
+                {
+                mT__195(); 
+
+                }
+                break;
+            case 184 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1204: T__196
+                {
+                mT__196(); 
+
+                }
+                break;
+            case 185 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1211: T__197
+                {
+                mT__197(); 
+
+                }
+                break;
+            case 186 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1218: T__198
+                {
+                mT__198(); 
+
+                }
+                break;
+            case 187 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1225: T__199
+                {
+                mT__199(); 
+
+                }
+                break;
+            case 188 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1232: T__200
+                {
+                mT__200(); 
+
+                }
+                break;
+            case 189 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1239: T__201
+                {
+                mT__201(); 
+
+                }
+                break;
+            case 190 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1246: T__202
+                {
+                mT__202(); 
+
+                }
+                break;
+            case 191 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1253: T__203
+                {
+                mT__203(); 
+
+                }
+                break;
+            case 192 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1260: T__204
+                {
+                mT__204(); 
+
+                }
+                break;
+            case 193 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1267: T__205
+                {
+                mT__205(); 
+
+                }
+                break;
+            case 194 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1274: T__206
+                {
+                mT__206(); 
+
+                }
+                break;
+            case 195 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1281: T__207
+                {
+                mT__207(); 
+
+                }
+                break;
+            case 196 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1288: T__208
+                {
+                mT__208(); 
+
+                }
+                break;
+            case 197 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1295: T__209
+                {
+                mT__209(); 
+
+                }
+                break;
+            case 198 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1302: T__210
+                {
+                mT__210(); 
+
+                }
+                break;
+            case 199 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1309: T__211
+                {
+                mT__211(); 
+
+                }
+                break;
+            case 200 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1316: T__212
+                {
+                mT__212(); 
+
+                }
+                break;
+            case 201 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1323: T__213
+                {
+                mT__213(); 
+
+                }
+                break;
+            case 202 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1330: T__214
+                {
+                mT__214(); 
+
+                }
+                break;
+            case 203 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1337: T__215
+                {
+                mT__215(); 
+
+                }
+                break;
+            case 204 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1344: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 205 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1353: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 206 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1362: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 207 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1375: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 208 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1383: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 209 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1395: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 210 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1411: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 211 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1427: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 212 :
+                // ../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g:1:1435: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\105\1\107\1\111\1\114\1\120\1\123\1\127\1\131\1\133"+
+        "\1\135\1\140\1\142\1\145\35\147\2\uffff\4\147\2\uffff\1\147\6\uffff"+
+        "\1\u00c0\2\u00c3\1\102\5\uffff\1\u00c8\26\uffff\1\u00ca\6\uffff"+
+        "\1\u00cc\4\uffff\1\147\1\uffff\14\147\1\u00df\6\147\1\u00ed\22\147"+
+        "\1\u010c\10\147\1\u0118\21\147\2\uffff\3\147\1\u0130\1\147\1\u0133"+
+        "\4\147\2\uffff\2\147\11\uffff\1\u00c3\12\uffff\1\u013a\1\u013b\20"+
+        "\147\1\uffff\4\147\1\u0151\10\147\1\uffff\21\147\1\u016b\4\147\1"+
+        "\u0170\7\147\1\uffff\2\147\1\u017c\10\147\1\uffff\1\u0185\23\147"+
+        "\1\uffff\2\147\1\uffff\1\147\2\uffff\6\147\2\uffff\4\147\1\u01a7"+
+        "\16\147\1\u01b7\1\147\1\uffff\1\u01b9\13\147\1\u01c7\1\u01c8\1\147"+
+        "\1\u01ca\1\u01cb\7\147\1\u01d3\1\uffff\1\147\1\u01d5\1\147\1\u01d7"+
+        "\1\uffff\1\u01d8\1\147\1\u01da\1\147\1\u01dd\1\u01de\5\147\1\uffff"+
+        "\1\147\1\u01e5\1\u01e6\5\147\1\uffff\1\u01ec\11\147\1\u01f7\11\147"+
+        "\1\u0201\1\147\1\uffff\1\u0203\3\147\1\u0207\5\147\1\uffff\1\147"+
+        "\1\u020f\6\147\1\u0216\2\147\1\u0219\1\u021a\2\147\1\uffff\1\147"+
+        "\1\uffff\11\147\1\u0227\3\147\2\uffff\1\u022b\2\uffff\2\147\1\u022e"+
+        "\4\147\1\uffff\1\147\1\uffff\1\147\2\uffff\1\u0235\2\uffff\1\u0236"+
+        "\2\uffff\4\147\1\u023b\1\147\2\uffff\5\147\1\uffff\12\147\1\uffff"+
+        "\7\147\1\u025c\1\u025d\1\uffff\1\u0260\1\uffff\1\147\1\uffff\1\147"+
+        "\1\uffff\1\u0263\3\147\1\u0267\1\u0268\1\u0269\1\uffff\3\147\1\u026d"+
+        "\1\u026e\1\147\1\uffff\1\u0270\1\147\2\uffff\1\u0273\6\147\1\u027c"+
+        "\3\147\1\u0281\1\uffff\3\147\2\uffff\1\u0285\1\uffff\6\147\2\uffff"+
+        "\3\147\1\u028f\1\uffff\6\147\1\u0298\1\u0299\1\u029a\1\u029b\1\u029c"+
+        "\1\u029d\1\u029e\1\u029f\1\u02a0\6\147\1\u02a7\3\147\1\u02ab\5\147"+
+        "\1\u02b1\2\uffff\2\147\1\uffff\2\147\1\uffff\1\u02b6\2\147\3\uffff"+
+        "\3\147\2\uffff\1\147\1\uffff\2\147\3\uffff\1\u02c3\1\u02c4\3\147"+
+        "\1\u02c8\1\uffff\3\147\1\u02cc\1\uffff\3\147\1\uffff\1\u02d0\2\147"+
+        "\1\u02d4\5\147\1\uffff\5\147\1\u02df\2\147\11\uffff\6\147\1\uffff"+
+        "\3\147\1\uffff\1\u02ec\4\147\1\uffff\3\147\1\u02f5\1\uffff\1\147"+
+        "\1\u02f7\1\147\1\u02f9\1\u02fa\2\147\1\u02fd\6\uffff\3\147\1\uffff"+
+        "\1\u0305\1\u0306\1\u0307\1\uffff\2\147\1\u030a\1\uffff\1\u030b\1"+
+        "\147\1\u030d\1\uffff\2\147\1\u0310\2\147\1\u0313\4\147\1\uffff\4"+
+        "\147\1\u031c\7\147\1\uffff\5\147\1\u032a\1\uffff\1\u032b\1\uffff"+
+        "\1\u032c\1\uffff\1\u032d\2\uffff\2\147\5\uffff\1\u0334\2\147\3\uffff"+
+        "\1\u0338\1\u0339\2\uffff\1\147\1\uffff\1\147\2\uffff\2\147\1\uffff"+
+        "\1\u033e\3\147\1\u0342\1\u0343\2\147\1\uffff\1\u0346\2\147\1\u0349"+
+        "\5\147\1\u034f\1\u0350\2\147\4\uffff\1\147\1\u0354\5\uffff\1\u0359"+
+        "\1\uffff\1\u035a\2\uffff\1\u035b\1\u035c\2\147\1\uffff\3\147\2\uffff"+
+        "\2\147\1\uffff\2\147\1\uffff\5\147\2\uffff\3\147\11\uffff\2\147"+
+        "\1\u0374\12\147\1\u037f\1\147\1\u0381\1\u0382\4\uffff\1\u038c\1"+
+        "\147\1\uffff\12\147\1\uffff\1\147\14\uffff\1\u039b\6\147\1\u03a2"+
+        "\1\147\1\u03a4\2\147\3\uffff\3\147\1\u03ad\2\147\1\uffff\1\147\1"+
+        "\uffff\1\u03b1\1\u03b2\3\uffff\1\u03b6\2\147\1\uffff\2\147\1\u03bb"+
+        "\6\uffff\1\u03c0\2\147\1\u03c3\6\uffff\1\147\1\u03c9\5\uffff\1\147"+
+        "\5\uffff\1\147\4\uffff\1\147\4\uffff\1\u03dd\33\uffff";
+    static final String DFA21_eofS =
+        "\u03f4\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\4\75\2\56\1\141\1\154\1\143"+
+        "\1\146\3\141\1\145\3\141\1\145\1\141\1\145\1\157\1\147\1\162\1\165"+
+        "\1\157\1\145\1\141\1\170\1\141\1\164\1\145\1\162\1\143\1\162\1\163"+
+        "\2\uffff\1\160\1\157\1\146\1\141\2\uffff\1\150\6\uffff\1\72\2\60"+
+        "\1\44\5\uffff\1\75\26\uffff\1\75\6\uffff\1\74\4\uffff\1\154\1\uffff"+
+        "\1\143\1\164\1\163\1\141\1\155\1\143\2\151\1\156\1\141\1\160\1\163"+
+        "\1\44\2\154\1\162\1\157\1\143\1\164\1\44\1\154\1\141\1\142\1\163"+
+        "\1\154\1\164\1\143\1\145\1\162\1\167\1\166\1\154\1\156\1\147\1\141"+
+        "\1\153\1\141\1\151\1\44\1\160\1\162\2\141\1\145\1\164\1\145\1\147"+
+        "\1\44\1\144\1\151\1\157\1\163\1\164\1\151\1\143\1\163\1\143\1\155"+
+        "\1\141\1\142\1\163\1\145\1\164\1\157\1\145\2\uffff\1\151\1\40\1"+
+        "\151\1\44\1\40\1\44\1\145\1\164\1\156\1\141\2\uffff\1\164\1\151"+
+        "\11\uffff\1\60\12\uffff\2\44\1\145\1\154\1\145\1\151\1\145\1\164"+
+        "\1\145\1\155\1\164\1\145\1\143\1\164\1\143\1\154\1\157\1\164\1\uffff"+
+        "\2\163\1\154\1\141\1\44\1\155\1\141\1\151\1\143\2\151\2\141\1\uffff"+
+        "\1\165\1\156\1\144\1\160\2\145\1\143\1\163\1\145\1\156\1\165\1\145"+
+        "\1\153\1\166\1\160\1\151\1\164\1\44\1\151\1\154\1\145\1\164\1\44"+
+        "\1\144\2\145\1\162\1\154\1\153\1\143\1\uffff\1\145\1\157\1\44\1"+
+        "\143\1\145\1\144\1\162\1\164\2\162\1\145\1\uffff\1\44\1\163\1\165"+
+        "\1\151\1\145\1\157\1\143\1\151\1\153\1\154\1\151\1\145\1\164\1\152"+
+        "\1\143\1\141\1\151\1\165\1\162\1\156\1\uffff\1\156\1\145\1\uffff"+
+        "\1\40\2\uffff\1\162\1\151\1\171\1\163\1\150\1\154\2\uffff\1\156"+
+        "\1\157\1\160\1\164\1\44\1\151\1\162\1\141\1\151\1\143\1\145\1\143"+
+        "\1\150\1\145\1\162\1\141\1\145\1\164\1\145\1\44\1\154\1\uffff\1"+
+        "\44\1\165\1\141\1\145\1\166\1\155\1\151\2\155\1\164\1\145\1\164"+
+        "\2\44\1\150\2\44\1\144\1\162\1\163\1\141\1\151\1\145\1\157\1\44"+
+        "\1\uffff\1\147\1\44\1\155\1\44\1\uffff\1\44\1\154\1\44\1\55\2\44"+
+        "\1\157\1\165\1\145\1\157\1\167\1\uffff\1\153\2\44\1\141\1\157\1"+
+        "\141\1\145\1\156\1\uffff\1\44\1\160\2\156\1\162\1\145\1\160\1\111"+
+        "\1\165\1\162\1\44\1\165\1\145\1\162\1\164\1\166\1\141\1\160\1\163"+
+        "\1\147\1\44\1\162\1\uffff\1\44\1\157\1\40\1\165\1\44\1\145\2\144"+
+        "\1\164\1\171\1\uffff\1\143\1\44\1\164\1\157\1\164\1\162\1\150\1"+
+        "\162\1\44\1\164\1\156\2\44\2\162\1\uffff\1\154\1\uffff\1\154\1\164"+
+        "\1\156\1\151\1\145\1\141\1\154\1\141\1\156\1\44\1\164\1\156\1\145"+
+        "\2\uffff\1\44\2\uffff\1\40\1\156\1\44\1\147\1\157\1\162\1\144\1"+
+        "\uffff\1\141\1\uffff\1\160\2\uffff\1\44\2\uffff\1\44\2\uffff\1\165"+
+        "\1\155\1\162\1\146\1\44\1\151\2\uffff\1\162\1\155\2\147\1\144\1"+
+        "\uffff\1\61\1\145\1\164\1\151\1\163\1\151\1\144\1\164\1\144\1\141"+
+        "\1\uffff\1\163\1\143\1\151\1\145\1\141\1\154\1\163\2\44\1\uffff"+
+        "\1\44\1\uffff\1\156\1\uffff\1\162\1\uffff\1\44\1\163\1\151\1\145"+
+        "\3\44\1\uffff\1\151\1\156\1\145\2\44\1\157\1\uffff\1\44\1\143\2"+
+        "\uffff\1\44\1\40\1\171\1\164\1\151\1\144\1\142\1\44\1\154\1\145"+
+        "\1\162\1\44\1\uffff\1\151\1\163\1\162\2\uffff\1\44\1\uffff\1\145"+
+        "\1\165\1\164\1\163\2\164\2\uffff\1\156\1\155\1\143\1\44\1\uffff"+
+        "\1\156\2\143\1\145\1\141\1\151\11\44\1\163\1\151\1\164\1\163\1\145"+
+        "\1\151\1\44\1\141\1\145\1\164\1\44\1\164\1\160\1\144\1\164\1\117"+
+        "\1\44\2\uffff\1\156\1\144\1\uffff\1\141\1\145\1\uffff\1\44\1\157"+
+        "\1\144\3\uffff\1\157\1\163\1\144\2\uffff\1\156\1\uffff\1\145\1\144"+
+        "\2\uffff\1\144\2\44\1\157\1\151\1\145\1\44\1\uffff\1\163\1\144\1"+
+        "\164\1\44\1\uffff\1\157\1\145\1\163\1\uffff\1\44\1\163\1\151\1\44"+
+        "\1\151\1\171\1\164\1\141\1\145\1\uffff\1\147\1\150\1\157\1\165\1"+
+        "\145\1\44\1\164\1\156\11\uffff\1\163\1\141\1\171\1\111\1\156\1\164"+
+        "\1\uffff\1\153\1\144\1\151\1\uffff\1\44\1\164\1\102\1\151\1\167"+
+        "\1\uffff\1\147\1\40\1\154\1\44\1\uffff\1\156\1\44\1\156\2\44\1\151"+
+        "\1\157\1\44\1\141\1\151\1\145\1\156\2\uffff\2\156\1\144\1\uffff"+
+        "\3\44\1\uffff\1\156\1\144\1\44\1\uffff\1\44\1\145\1\44\1\uffff\1"+
+        "\157\1\40\1\44\1\164\1\156\1\44\1\171\1\165\1\155\1\162\1\uffff"+
+        "\1\145\1\147\1\101\1\154\1\44\1\144\1\145\1\164\1\151\1\145\1\117"+
+        "\1\157\1\uffff\1\151\1\156\1\171\1\157\1\156\1\44\1\uffff\1\44\1"+
+        "\uffff\1\44\1\uffff\1\44\2\uffff\1\172\1\146\1\uffff\1\164\1\147"+
+        "\1\170\1\163\1\44\1\147\1\40\3\uffff\2\44\2\uffff\1\163\1\uffff"+
+        "\1\156\2\uffff\1\151\1\164\1\uffff\1\44\1\156\1\155\1\143\2\44\1"+
+        "\144\1\117\1\uffff\1\44\2\163\1\44\1\141\1\150\1\167\1\156\1\157"+
+        "\2\44\1\156\1\145\4\uffff\1\145\1\44\1\145\1\156\1\164\1\151\1\uffff"+
+        "\1\44\1\uffff\1\44\2\uffff\2\44\1\157\1\141\1\uffff\1\164\1\141"+
+        "\1\145\2\uffff\1\155\1\167\1\uffff\1\164\1\163\1\uffff\1\164\1\157"+
+        "\1\156\1\124\1\156\2\uffff\1\124\1\162\1\144\1\uffff\1\40\1\145"+
+        "\1\40\1\147\4\uffff\1\156\1\147\1\44\1\164\1\156\1\151\1\156\1\141"+
+        "\1\151\1\157\1\154\1\145\1\151\1\44\1\151\2\44\1\146\1\144\1\160"+
+        "\1\156\1\44\1\145\1\uffff\1\151\1\164\1\156\1\145\1\156\1\157\1"+
+        "\162\1\144\1\162\1\155\1\uffff\1\155\5\uffff\1\55\4\uffff\1\145"+
+        "\1\uffff\1\44\1\157\1\141\1\151\1\162\1\143\1\156\1\44\1\145\1\44"+
+        "\2\145\2\144\1\uffff\1\156\1\147\1\163\1\44\1\145\1\111\1\uffff"+
+        "\1\162\1\uffff\2\44\1\157\1\156\1\55\1\44\1\145\1\164\1\uffff\1"+
+        "\111\1\144\1\44\2\uffff\1\165\1\164\1\144\1\uffff\1\44\1\162\1\144"+
+        "\1\44\1\uffff\1\142\1\145\1\157\1\156\1\uffff\1\141\1\44\1\uffff"+
+        "\1\154\1\147\1\165\2\164\1\uffff\2\145\1\142\1\145\1\157\1\40\1"+
+        "\162\1\154\1\147\2\162\1\40\2\145\1\44\1\141\1\162\1\40\1\162\1"+
+        "\uffff\1\156\1\141\1\162\1\40\1\144\1\156\1\141\1\162\2\uffff\1"+
+        "\144\1\156\1\141\2\uffff\1\144\1\156\2\uffff\1\144\2\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1"+
+        "\170\1\171\1\156\1\162\1\157\1\165\1\157\1\162\1\165\1\151\1\145"+
+        "\1\171\1\151\1\157\1\170\1\162\1\165\1\162\1\145\1\141\1\170\1\141"+
+        "\1\165\1\145\1\162\1\143\1\162\1\163\2\uffff\1\163\1\157\1\166\1"+
+        "\145\2\uffff\1\151\6\uffff\1\72\1\170\1\154\1\172\5\uffff\1\75\26"+
+        "\uffff\1\75\6\uffff\1\74\4\uffff\1\162\1\uffff\2\164\1\163\1\141"+
+        "\1\160\1\154\2\151\1\156\1\141\1\160\1\163\1\172\1\154\2\162\1\157"+
+        "\1\166\1\164\1\172\1\165\1\141\1\142\1\164\1\167\1\164\1\147\1\157"+
+        "\1\162\1\170\1\166\1\154\1\156\1\163\1\166\1\153\1\141\1\163\1\172"+
+        "\1\160\1\162\1\171\1\141\1\145\1\164\1\145\1\147\1\172\1\144\1\151"+
+        "\1\157\1\163\1\164\1\157\1\143\1\163\1\160\1\155\1\141\1\142\1\163"+
+        "\1\145\1\164\1\157\1\145\2\uffff\1\151\1\40\1\151\1\172\1\145\1"+
+        "\172\1\145\1\164\1\156\1\141\2\uffff\1\164\1\151\11\uffff\1\154"+
+        "\12\uffff\2\172\1\145\1\154\1\145\1\151\1\145\1\164\1\145\1\155"+
+        "\1\164\1\145\1\143\1\164\1\143\1\154\1\157\1\164\1\uffff\2\163\1"+
+        "\164\1\141\1\172\1\155\1\141\1\151\1\143\2\151\2\141\1\uffff\1\165"+
+        "\1\156\1\144\1\160\2\145\1\143\1\163\1\145\1\156\1\165\1\145\1\153"+
+        "\1\166\1\160\1\151\1\164\1\172\1\151\1\154\1\145\1\164\1\172\1\144"+
+        "\2\145\1\162\1\154\1\153\1\163\1\uffff\1\145\1\157\1\172\1\143\1"+
+        "\145\1\144\1\162\1\164\2\162\1\145\1\uffff\1\172\1\163\1\165\1\151"+
+        "\1\145\1\157\1\143\1\151\1\153\1\154\1\151\1\145\1\164\1\152\1\143"+
+        "\1\141\2\165\1\162\1\156\1\uffff\1\156\1\145\1\uffff\1\40\2\uffff"+
+        "\1\162\1\151\1\171\1\163\1\150\1\154\2\uffff\1\156\1\157\1\160\1"+
+        "\164\1\172\1\151\1\162\1\141\1\151\1\143\1\145\1\143\1\150\1\145"+
+        "\1\162\1\141\1\145\1\164\1\145\1\172\1\154\1\uffff\1\172\1\165\1"+
+        "\141\1\162\1\166\1\155\1\151\2\155\1\164\1\151\1\164\2\172\1\150"+
+        "\2\172\1\144\1\162\1\163\1\141\1\151\1\145\1\157\1\172\1\uffff\1"+
+        "\147\1\172\1\155\1\172\1\uffff\1\172\1\154\1\172\1\163\2\172\1\157"+
+        "\1\165\1\145\1\157\1\167\1\uffff\1\153\2\172\1\141\1\157\1\141\1"+
+        "\145\1\156\1\uffff\1\172\1\160\2\156\1\162\1\145\1\160\1\123\1\165"+
+        "\1\162\1\172\1\165\1\145\1\162\1\164\1\166\1\141\1\160\1\163\1\147"+
+        "\1\172\1\162\1\uffff\1\172\1\157\1\40\1\165\1\172\1\145\1\163\1"+
+        "\144\1\164\1\171\1\uffff\1\143\1\172\1\164\1\157\1\164\1\162\1\150"+
+        "\1\162\1\172\1\164\1\156\2\172\2\162\1\uffff\1\154\1\uffff\1\154"+
+        "\1\164\1\156\1\151\1\145\1\141\1\154\1\141\1\156\1\172\1\164\1\156"+
+        "\1\145\2\uffff\1\172\2\uffff\1\40\1\156\1\172\1\147\1\157\1\162"+
+        "\1\144\1\uffff\1\141\1\uffff\1\160\2\uffff\1\172\2\uffff\1\172\2"+
+        "\uffff\1\165\1\155\1\162\1\146\1\172\1\151\2\uffff\1\162\1\155\2"+
+        "\147\1\144\1\uffff\1\71\1\145\1\164\1\151\1\163\1\151\1\156\1\164"+
+        "\1\144\1\141\1\uffff\1\163\1\143\1\151\1\145\1\141\1\154\1\163\2"+
+        "\172\1\uffff\1\172\1\uffff\1\156\1\uffff\1\162\1\uffff\1\172\1\163"+
+        "\1\151\1\145\3\172\1\uffff\1\151\1\156\1\145\2\172\1\157\1\uffff"+
+        "\1\172\1\143\2\uffff\1\172\1\55\1\171\1\164\1\151\1\144\1\142\1"+
+        "\172\1\154\1\145\1\162\1\172\1\uffff\1\151\1\163\1\162\2\uffff\1"+
+        "\172\1\uffff\1\145\1\165\1\164\1\163\2\164\2\uffff\1\156\1\155\1"+
+        "\143\1\172\1\uffff\1\156\1\143\1\163\1\145\1\141\1\151\11\172\1"+
+        "\163\1\151\1\164\1\163\1\145\1\151\1\172\1\141\1\145\1\164\1\172"+
+        "\1\164\1\160\1\144\1\164\1\117\1\172\2\uffff\1\156\1\144\1\uffff"+
+        "\1\141\1\145\1\uffff\1\172\1\157\1\144\3\uffff\1\157\1\163\1\144"+
+        "\2\uffff\1\156\1\uffff\1\145\1\144\2\uffff\1\165\2\172\1\157\1\151"+
+        "\1\145\1\172\1\uffff\1\163\1\144\1\164\1\172\1\uffff\1\157\1\145"+
+        "\1\163\1\uffff\1\172\1\163\1\171\1\172\1\151\1\171\1\164\1\141\1"+
+        "\145\1\uffff\1\147\1\150\1\157\1\165\1\145\1\172\1\164\1\156\11"+
+        "\uffff\1\163\1\141\1\171\1\123\1\156\1\164\1\uffff\1\153\1\144\1"+
+        "\151\1\uffff\1\172\1\164\1\117\1\151\1\167\1\uffff\1\147\1\40\1"+
+        "\154\1\172\1\uffff\1\156\1\172\1\156\2\172\1\151\1\157\1\172\1\141"+
+        "\1\151\1\145\1\156\2\uffff\2\156\1\144\1\uffff\3\172\1\uffff\1\156"+
+        "\1\144\1\172\1\uffff\1\172\1\145\1\172\1\uffff\1\157\1\40\1\172"+
+        "\1\164\1\156\1\172\1\171\1\165\1\155\1\162\1\uffff\1\145\1\147\1"+
+        "\101\1\154\1\172\1\156\1\145\1\164\1\151\1\145\1\117\1\157\1\uffff"+
+        "\1\151\1\156\1\171\1\157\1\156\1\172\1\uffff\1\172\1\uffff\1\172"+
+        "\1\uffff\1\172\2\uffff\1\172\1\146\1\uffff\1\164\1\147\1\170\1\163"+
+        "\1\172\1\147\1\40\3\uffff\2\172\2\uffff\1\163\1\uffff\1\156\2\uffff"+
+        "\1\151\1\164\1\uffff\1\172\1\156\1\155\1\143\2\172\1\144\1\117\1"+
+        "\uffff\1\172\2\163\1\172\1\141\1\150\1\167\1\156\1\157\2\172\1\156"+
+        "\1\145\4\uffff\1\145\1\172\1\145\1\156\1\164\1\151\1\uffff\1\172"+
+        "\1\uffff\1\172\2\uffff\2\172\1\157\1\141\1\uffff\1\164\1\141\1\145"+
+        "\2\uffff\1\155\1\167\1\uffff\1\164\1\163\1\uffff\1\164\1\157\1\156"+
+        "\1\124\1\156\2\uffff\1\124\1\162\1\144\1\uffff\1\40\1\145\1\40\1"+
+        "\147\4\uffff\1\156\1\147\1\172\1\164\1\156\1\151\1\156\1\141\1\151"+
+        "\1\157\1\154\1\145\1\151\1\172\1\151\2\172\1\162\1\144\1\167\1\156"+
+        "\1\172\1\145\1\uffff\1\151\1\164\1\156\1\145\1\156\1\157\1\162\1"+
+        "\144\1\162\1\155\1\uffff\1\155\5\uffff\1\55\4\uffff\1\145\1\uffff"+
+        "\1\172\1\157\1\141\1\151\1\162\1\143\1\156\1\172\1\145\1\172\2\145"+
+        "\1\151\1\144\1\uffff\1\156\1\147\1\163\1\172\1\145\1\111\1\uffff"+
+        "\1\162\1\uffff\2\172\1\157\1\156\1\55\1\172\1\145\1\164\1\uffff"+
+        "\1\111\1\144\1\172\2\uffff\1\165\1\164\1\151\1\uffff\1\172\1\162"+
+        "\1\144\1\172\1\uffff\1\142\1\145\1\157\1\156\1\uffff\1\141\1\172"+
+        "\1\uffff\1\154\1\147\1\165\2\164\1\uffff\2\145\1\142\1\145\1\157"+
+        "\1\40\1\162\1\154\1\147\2\162\1\40\2\145\1\172\1\141\1\162\1\40"+
+        "\1\162\1\uffff\1\156\1\141\1\162\1\40\1\147\1\156\1\141\1\162\2"+
+        "\uffff\1\147\1\156\1\141\2\uffff\1\147\1\156\2\uffff\1\147\2\uffff";
+    static final String DFA21_acceptS =
+        "\53\uffff\1\146\1\147\4\uffff\1\177\1\u0080\1\uffff\1\u00a0\1\u00a1"+
+        "\1\u00a2\1\u00a3\1\u00a4\1\u00a7\4\uffff\1\u00cf\2\u00d0\1\u00d3"+
+        "\1\u00d4\1\uffff\1\23\1\1\1\2\1\u00c9\1\3\1\u00b9\1\4\1\35\1\26"+
+        "\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\u00d1\1\u00d2\1\32\1\10"+
+        "\1\33\1\uffff\1\34\1\15\1\16\1\24\1\101\1\17\1\uffff\1\37\1\25\1"+
+        "\u00c8\1\u00b8\1\uffff\1\u00cf\101\uffff\1\146\1\147\12\uffff\1"+
+        "\177\1\u0080\2\uffff\1\u00a0\1\u00a1\1\u00a2\1\u00a3\1\u00a4\1\u00a7"+
+        "\1\u00c7\1\u00ab\1\u00cc\1\uffff\1\u00cd\1\u00ce\1\u00d0\1\u00d3"+
+        "\1\13\1\11\1\14\1\12\1\21\1\22\22\uffff\1\u00a8\15\uffff\1\u00ae"+
+        "\36\uffff\1\167\13\uffff\1\u00a6\24\uffff\1\u0091\2\uffff\1\175"+
+        "\1\uffff\1\u00bd\1\u0083\6\uffff\1\40\1\u00ca\25\uffff\1\152\31"+
+        "\uffff\1\u00af\4\uffff\1\61\13\uffff\1\u00b4\10\uffff\1\176\26\uffff"+
+        "\1\171\12\uffff\1\u00a9\17\uffff\1\u008b\1\uffff\1\u0082\15\uffff"+
+        "\1\160\1\u00ac\1\uffff\1\51\1\153\7\uffff\1\56\1\uffff\1\u00b0\1"+
+        "\uffff\1\60\1\62\1\uffff\1\102\1\63\1\uffff\1\65\1\154\6\uffff\1"+
+        "\u00cb\1\66\5\uffff\1\u0086\12\uffff\1\123\11\uffff\1\161\1\uffff"+
+        "\1\u0084\1\uffff\1\170\1\uffff\1\u008c\7\uffff\1\45\6\uffff\1\u00be"+
+        "\2\uffff\1\46\1\57\14\uffff\1\103\3\uffff\1\u00b7\1\u0094\1\uffff"+
+        "\1\52\6\uffff\1\u008a\1\u008e\4\uffff\1\u00b2\40\uffff\1\142\1\151"+
+        "\2\uffff\1\174\2\uffff\1\u00ad\3\uffff\1\u00c5\1\162\1\42\3\uffff"+
+        "\1\u0085\1\u00aa\1\uffff\1\43\2\uffff\1\157\1\166\7\uffff\1\u0081"+
+        "\4\uffff\1\156\3\uffff\1\u00b3\11\uffff\1\u00b1\10\uffff\1\104\1"+
+        "\105\1\106\1\107\1\110\1\111\1\112\1\113\1\114\6\uffff\1\135\3\uffff"+
+        "\1\125\5\uffff\1\141\4\uffff\1\41\14\uffff\1\u00b5\1\47\3\uffff"+
+        "\1\u0087\3\uffff\1\50\3\uffff\1\145\3\uffff\1\64\12\uffff\1\75\14"+
+        "\uffff\1\126\6\uffff\1\u00c6\1\uffff\1\u0088\1\uffff\1\u00c3\1\uffff"+
+        "\1\53\1\u00c1\2\uffff\1\u00bf\7\uffff\1\u0093\1\u00c4\1\150\2\uffff"+
+        "\1\54\1\55\1\uffff\1\172\1\uffff\1\u00bb\1\67\2\uffff\1\u00bc\10"+
+        "\uffff\1\124\15\uffff\1\165\1\u00c0\1\44\1\76\6\uffff\1\100\1\uffff"+
+        "\1\u00ba\1\uffff\1\173\1\u00c2\4\uffff\1\u0089\3\uffff\1\77\1\143"+
+        "\2\uffff\1\136\2\uffff\1\117\5\uffff\1\131\1\132\3\uffff\1\u00a5"+
+        "\4\uffff\1\144\1\155\1\164\1\163\27\uffff\1\72\12\uffff\1\127\1"+
+        "\uffff\1\134\1\u00b6\1\u008d\1\u008f\1\u0090\1\uffff\1\u0098\1\u0099"+
+        "\1\u009a\1\u009b\1\uffff\1\70\16\uffff\1\71\6\uffff\1\120\1\uffff"+
+        "\1\122\10\uffff\1\116\3\uffff\1\130\1\133\3\uffff\1\73\4\uffff\1"+
+        "\121\4\uffff\1\74\2\uffff\1\140\5\uffff\1\137\23\uffff\1\115\10"+
+        "\uffff\1\u0092\1\u0095\3\uffff\1\u0096\1\u0097\2\uffff\1\u009c\1"+
+        "\u009d\1\uffff\1\u009e\1\u009f";
+    static final String DFA21_specialS =
+        "\1\0\u03f3\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\102\2\101\2\102\1\101\22\102\1\101\1\11\1\77\1\67\1\76"+
+            "\1\10\1\3\1\100\1\61\1\62\1\6\1\4\1\65\1\5\1\14\1\7\1\73\11"+
+            "\74\1\72\1\71\1\13\1\1\1\12\1\15\1\64\1\50\1\37\1\47\1\46\1"+
+            "\43\1\76\1\51\6\76\1\44\1\76\1\40\1\76\1\41\1\45\1\42\1\52\5"+
+            "\76\1\70\1\102\1\66\1\75\1\76\1\102\1\35\1\34\1\24\1\23\1\17"+
+            "\1\22\1\36\1\33\1\21\1\56\1\76\1\30\1\60\1\27\1\57\1\26\1\76"+
+            "\1\25\1\20\1\32\1\55\1\16\1\63\1\76\1\31\1\76\1\53\1\2\1\54"+
+            "\uff82\102",
+            "\1\103\1\104",
+            "\1\106",
+            "\1\110",
+            "\1\113\21\uffff\1\112",
+            "\1\117\17\uffff\1\115\1\116",
+            "\1\122\22\uffff\1\121",
+            "\1\125\4\uffff\1\126\15\uffff\1\124",
+            "\1\130",
+            "\1\132",
+            "\1\134",
+            "\1\137\1\136",
+            "\1\141",
+            "\1\144\13\uffff\1\143",
+            "\1\146",
+            "\1\152\1\uffff\1\151\11\uffff\1\150",
+            "\1\161\1\uffff\1\155\6\uffff\1\156\7\uffff\1\153\1\154\1\uffff"+
+            "\1\157\1\uffff\1\160",
+            "\1\164\6\uffff\1\162\1\163",
+            "\1\165\7\uffff\1\166\5\uffff\1\167\2\uffff\1\170",
+            "\1\172\3\uffff\1\171\11\uffff\1\173",
+            "\1\177\6\uffff\1\175\6\uffff\1\174\5\uffff\1\176",
+            "\1\u0081\11\uffff\1\u0080",
+            "\1\u0082\3\uffff\1\u0084\14\uffff\1\u0083",
+            "\1\u0086\3\uffff\1\u0085\11\uffff\1\u0088\5\uffff\1\u0087",
+            "\1\u0089\3\uffff\1\u008a\3\uffff\1\u008b",
+            "\1\u008c",
+            "\1\u008d\6\uffff\1\u0090\6\uffff\1\u008e\2\uffff\1\u0091\6"+
+            "\uffff\1\u008f",
+            "\1\u0092\3\uffff\1\u0093",
+            "\1\u0094",
+            "\1\u0096\6\uffff\1\u0098\4\uffff\1\u0097\2\uffff\1\u0095\1"+
+            "\uffff\1\u0099",
+            "\1\u009a",
+            "\1\u009b",
+            "\1\u009c\2\uffff\1\u009d",
+            "\1\u009e",
+            "\1\u009f",
+            "\1\u00a0",
+            "\1\u00a1",
+            "\1\u00a2\1\u00a3",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\1\u00a8",
+            "",
+            "",
+            "\1\u00ac\2\uffff\1\u00ab",
+            "\1\u00ad",
+            "\1\u00b0\7\uffff\1\u00af\1\uffff\1\u00b2\1\uffff\1\u00ae\3"+
+            "\uffff\1\u00b1",
+            "\1\u00b3\3\uffff\1\u00b4",
+            "",
+            "",
+            "\1\u00b8\1\u00b7",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00bf",
+            "\12\u00c2\10\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1\u00c4"+
+            "\13\uffff\1\u00c1\6\uffff\1\u00c2\2\uffff\1\u00c4\1\uffff\3"+
+            "\u00c4\5\uffff\1\u00c4\13\uffff\1\u00c1",
+            "\12\u00c2\10\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1\u00c4"+
+            "\22\uffff\1\u00c2\2\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1"+
+            "\u00c4",
+            "\1\147\34\uffff\32\147\4\uffff\1\147\1\uffff\32\147",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c7",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c9",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00cb",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00cd\5\uffff\1\u00ce",
+            "",
+            "\1\u00d1\14\uffff\1\u00d0\3\uffff\1\u00cf",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d6\2\uffff\1\u00d5",
+            "\1\u00d7\10\uffff\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u00e0",
+            "\1\u00e2\1\uffff\1\u00e3\3\uffff\1\u00e1",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00ea\2\uffff\1\u00e6\13\uffff\1\u00e9\1\u00e8\1\u00eb"+
+            "\1\uffff\1\u00e7",
+            "\1\u00ec",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u00ee\1\uffff\1\u00f0\6\uffff\1\u00ef",
+            "\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3\1\u00f4",
+            "\1\u00f6\10\uffff\1\u00f7\1\uffff\1\u00f5",
+            "\1\u00f8",
+            "\1\u00fa\3\uffff\1\u00f9",
+            "\1\u00fb\11\uffff\1\u00fc",
+            "\1\u00fd",
+            "\1\u00ff\1\u00fe",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0104\13\uffff\1\u0103",
+            "\1\u0105\24\uffff\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109\11\uffff\1\u010a",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\17\147\1\u010b\12\147",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u0110\23\uffff\1\u0111\3\uffff\1\u010f",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\2\147\1\u0117\27\147",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e\5\uffff\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122\14\uffff\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "",
+            "",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\3\147\1\u012f\26\147",
+            "\1\u0132\104\uffff\1\u0131",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "",
+            "",
+            "\1\u0138",
+            "\1\u0139",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\u00c2\10\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1\u00c4"+
+            "\22\uffff\1\u00c2\2\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1"+
+            "\u00c4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014f\7\uffff\1\u014e",
+            "\1\u0150",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177\14\uffff\1\u0179\2\uffff\1\u0178",
+            "",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\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\13\uffff\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "",
+            "\1\u019a",
+            "\1\u019b",
+            "",
+            "\1\u019c",
+            "",
+            "",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "",
+            "",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\u01b5",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\4\147\1\u01b6\25\147",
+            "\1\u01b8",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc\14\uffff\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c5\3\uffff\1\u01c4",
+            "\1\u01c6",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01c9",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u01d4",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01d6",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01d9",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01db\105\uffff\1\u01dc",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01df",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e3",
+            "",
+            "\1\u01e4",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3\11\uffff\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0202",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0208",
+            "\1\u0209\16\uffff\1\u020a",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\u020d",
+            "",
+            "\1\u020e",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0210",
+            "\1\u0211",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u021b",
+            "\1\u021c",
+            "",
+            "\1\u021d",
+            "",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0228",
+            "\1\u0229",
+            "\1\u022a",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u022f",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\u0232",
+            "",
+            "\1\u0233",
+            "",
+            "\1\u0234",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u023c",
+            "",
+            "",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\u0240",
+            "\1\u0241",
+            "",
+            "\1\u0242\1\u0243\1\u0244\1\u0245\1\u0246\1\u0247\1\u0248\1"+
+            "\u0249\1\u024a",
+            "\1\u024b",
+            "\1\u024c",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0251\11\uffff\1\u0250",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "",
+            "\1\u0255",
+            "\1\u0256",
+            "\1\u0257",
+            "\1\u0258",
+            "\1\u0259",
+            "\1\u025a",
+            "\1\u025b",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\4\147\1\u025f\3\147\1\u025e\21\147",
+            "",
+            "\1\u0261",
+            "",
+            "\1\u0262",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0264",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u026a",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u026f",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0271",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\4\147\1\u0272\25\147",
+            "\1\u0274\14\uffff\1\u0275",
+            "\1\u0276",
+            "\1\u0277",
+            "\1\u0278",
+            "\1\u0279",
+            "\1\u027a",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\3\147\1\u027b\26\147",
+            "\1\u027d",
+            "\1\u027e",
+            "\1\u027f",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\22\147\1\u0280\7\147",
+            "",
+            "\1\u0282",
+            "\1\u0283",
+            "\1\u0284",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u0286",
+            "\1\u0287",
+            "\1\u0288",
+            "\1\u0289",
+            "\1\u028a",
+            "\1\u028b",
+            "",
+            "",
+            "\1\u028c",
+            "\1\u028d",
+            "\1\u028e",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u0290",
+            "\1\u0291",
+            "\1\u0292\14\uffff\1\u0294\2\uffff\1\u0293",
+            "\1\u0295",
+            "\1\u0296",
+            "\1\u0297",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02a1",
+            "\1\u02a2",
+            "\1\u02a3",
+            "\1\u02a4",
+            "\1\u02a5",
+            "\1\u02a6",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02a8",
+            "\1\u02a9",
+            "\1\u02aa",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02ac",
+            "\1\u02ad",
+            "\1\u02ae",
+            "\1\u02af",
+            "\1\u02b0",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\u02b2",
+            "\1\u02b3",
+            "",
+            "\1\u02b4",
+            "\1\u02b5",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02b7",
+            "\1\u02b8",
+            "",
+            "",
+            "",
+            "\1\u02b9",
+            "\1\u02ba",
+            "\1\u02bb",
+            "",
+            "",
+            "\1\u02bc",
+            "",
+            "\1\u02bd",
+            "\1\u02be",
+            "",
+            "",
+            "\1\u02bf\16\uffff\1\u02c0\1\u02c1\1\u02c2",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02c5",
+            "\1\u02c6",
+            "\1\u02c7",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u02c9",
+            "\1\u02ca",
+            "\1\u02cb",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u02cd",
+            "\1\u02ce",
+            "\1\u02cf",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02d1",
+            "\1\u02d2\17\uffff\1\u02d3",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02d5",
+            "\1\u02d6",
+            "\1\u02d7",
+            "\1\u02d8",
+            "\1\u02d9",
+            "",
+            "\1\u02da",
+            "\1\u02db",
+            "\1\u02dc",
+            "\1\u02dd",
+            "\1\u02de",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02e0",
+            "\1\u02e1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02e2",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5\11\uffff\1\u02e6",
+            "\1\u02e7",
+            "\1\u02e8",
+            "",
+            "\1\u02e9",
+            "\1\u02ea",
+            "\1\u02eb",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02ed",
+            "\1\u02ef\14\uffff\1\u02ee",
+            "\1\u02f0",
+            "\1\u02f1",
+            "",
+            "\1\u02f2",
+            "\1\u02f3",
+            "\1\u02f4",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u02f6",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02f8",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02fb",
+            "\1\u02fc",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u02fe",
+            "\1\u02ff",
+            "\1\u0300",
+            "\1\u0301",
+            "",
+            "",
+            "\1\u0302",
+            "\1\u0303",
+            "\1\u0304",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u0308",
+            "\1\u0309",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u030c",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u030e",
+            "\1\u030f",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0311",
+            "\1\u0312",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0314",
+            "\1\u0315",
+            "\1\u0316",
+            "\1\u0317",
+            "",
+            "\1\u0318",
+            "\1\u0319",
+            "\1\u031a",
+            "\1\u031b",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u031d\11\uffff\1\u031e",
+            "\1\u031f",
+            "\1\u0320",
+            "\1\u0321",
+            "\1\u0322",
+            "\1\u0323",
+            "\1\u0324",
+            "",
+            "\1\u0325",
+            "\1\u0326",
+            "\1\u0327",
+            "\1\u0328",
+            "\1\u0329",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\u032e",
+            "\1\u032f",
+            "",
+            "\1\u0330",
+            "\1\u0331",
+            "\1\u0332",
+            "\1\u0333",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0335",
+            "\1\u0336",
+            "",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\22\147\1\u0337\7\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\u033a",
+            "",
+            "\1\u033b",
+            "",
+            "",
+            "\1\u033c",
+            "\1\u033d",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u033f",
+            "\1\u0340",
+            "\1\u0341",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0344",
+            "\1\u0345",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0347",
+            "\1\u0348",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u034a",
+            "\1\u034b",
+            "\1\u034c",
+            "\1\u034d",
+            "\1\u034e",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0351",
+            "\1\u0352",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0353",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0355",
+            "\1\u0356",
+            "\1\u0357",
+            "\1\u0358",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u035d",
+            "\1\u035e",
+            "",
+            "\1\u035f",
+            "\1\u0360",
+            "\1\u0361",
+            "",
+            "",
+            "\1\u0362",
+            "\1\u0363",
+            "",
+            "\1\u0364",
+            "\1\u0365",
+            "",
+            "\1\u0366",
+            "\1\u0367",
+            "\1\u0368",
+            "\1\u0369",
+            "\1\u036a",
+            "",
+            "",
+            "\1\u036b",
+            "\1\u036c",
+            "\1\u036d",
+            "",
+            "\1\u036e",
+            "\1\u036f",
+            "\1\u0370",
+            "\1\u0371",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0372",
+            "\1\u0373",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0375",
+            "\1\u0376",
+            "\1\u0377",
+            "\1\u0378",
+            "\1\u0379",
+            "\1\u037a",
+            "\1\u037b",
+            "\1\u037c",
+            "\1\u037d",
+            "\1\u037e",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0380",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u0383\11\uffff\1\u0384\1\uffff\1\u0385",
+            "\1\u0386",
+            "\1\u0388\1\uffff\1\u0387\1\u0389\3\uffff\1\u038a",
+            "\1\u038b",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u038d",
+            "",
+            "\1\u038e",
+            "\1\u038f",
+            "\1\u0390",
+            "\1\u0391",
+            "\1\u0392",
+            "\1\u0393",
+            "\1\u0394",
+            "\1\u0395",
+            "\1\u0396",
+            "\1\u0397",
+            "",
+            "\1\u0398",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0399",
+            "",
+            "",
+            "",
+            "",
+            "\1\u039a",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u039c",
+            "\1\u039d",
+            "\1\u039e",
+            "\1\u039f",
+            "\1\u03a0",
+            "\1\u03a1",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03a3",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03a5",
+            "\1\u03a6",
+            "\1\u03a7\4\uffff\1\u03a8",
+            "\1\u03a9",
+            "",
+            "\1\u03aa",
+            "\1\u03ab",
+            "\1\u03ac",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03ae",
+            "\1\u03af",
+            "",
+            "\1\u03b0",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03b3",
+            "\1\u03b4",
+            "\1\u03b5",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03b7",
+            "\1\u03b8",
+            "",
+            "\1\u03b9",
+            "\1\u03ba",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "",
+            "\1\u03bc",
+            "\1\u03bd",
+            "\1\u03be\4\uffff\1\u03bf",
+            "",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03c1",
+            "\1\u03c2",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u03c4",
+            "\1\u03c5",
+            "\1\u03c6",
+            "\1\u03c7",
+            "",
+            "\1\u03c8",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "",
+            "\1\u03ca",
+            "\1\u03cb",
+            "\1\u03cc",
+            "\1\u03cd",
+            "\1\u03ce",
+            "",
+            "\1\u03cf",
+            "\1\u03d0",
+            "\1\u03d1",
+            "\1\u03d2",
+            "\1\u03d3",
+            "\1\u03d4",
+            "\1\u03d5",
+            "\1\u03d6",
+            "\1\u03d7",
+            "\1\u03d8",
+            "\1\u03d9",
+            "\1\u03da",
+            "\1\u03db",
+            "\1\u03dc",
+            "\1\147\13\uffff\12\147\7\uffff\32\147\4\uffff\1\147\1\uffff"+
+            "\32\147",
+            "\1\u03de",
+            "\1\u03df",
+            "\1\u03e0",
+            "\1\u03e1",
+            "",
+            "\1\u03e2",
+            "\1\u03e3",
+            "\1\u03e4",
+            "\1\u03e5",
+            "\1\u03e7\2\uffff\1\u03e6",
+            "\1\u03e8",
+            "\1\u03e9",
+            "\1\u03ea",
+            "",
+            "",
+            "\1\u03ec\2\uffff\1\u03eb",
+            "\1\u03ed",
+            "\1\u03ee",
+            "",
+            "",
+            "\1\u03f0\2\uffff\1\u03ef",
+            "\1\u03f1",
+            "",
+            "",
+            "\1\u03f3\2\uffff\1\u03f2",
+            "",
+            ""
+    };
+
+    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]);
+        }
+    }
+
+    static 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 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | T__190 | T__191 | T__192 | T__193 | T__194 | T__195 | T__196 | T__197 | T__198 | T__199 | T__200 | T__201 | T__202 | T__203 | T__204 | T__205 | T__206 | T__207 | T__208 | T__209 | T__210 | T__211 | T__212 | T__213 | T__214 | T__215 | 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=='v') ) {s = 14;}
+
+                        else if ( (LA21_0=='e') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0=='i') ) {s = 17;}
+
+                        else if ( (LA21_0=='f') ) {s = 18;}
+
+                        else if ( (LA21_0=='d') ) {s = 19;}
+
+                        else if ( (LA21_0=='c') ) {s = 20;}
+
+                        else if ( (LA21_0=='r') ) {s = 21;}
+
+                        else if ( (LA21_0=='p') ) {s = 22;}
+
+                        else if ( (LA21_0=='n') ) {s = 23;}
+
+                        else if ( (LA21_0=='l') ) {s = 24;}
+
+                        else if ( (LA21_0=='y') ) {s = 25;}
+
+                        else if ( (LA21_0=='t') ) {s = 26;}
+
+                        else if ( (LA21_0=='h') ) {s = 27;}
+
+                        else if ( (LA21_0=='b') ) {s = 28;}
+
+                        else if ( (LA21_0=='a') ) {s = 29;}
+
+                        else if ( (LA21_0=='g') ) {s = 30;}
+
+                        else if ( (LA21_0=='B') ) {s = 31;}
+
+                        else if ( (LA21_0=='P') ) {s = 32;}
+
+                        else if ( (LA21_0=='R') ) {s = 33;}
+
+                        else if ( (LA21_0=='T') ) {s = 34;}
+
+                        else if ( (LA21_0=='E') ) {s = 35;}
+
+                        else if ( (LA21_0=='N') ) {s = 36;}
+
+                        else if ( (LA21_0=='S') ) {s = 37;}
+
+                        else if ( (LA21_0=='D') ) {s = 38;}
+
+                        else if ( (LA21_0=='C') ) {s = 39;}
+
+                        else if ( (LA21_0=='A') ) {s = 40;}
+
+                        else if ( (LA21_0=='G') ) {s = 41;}
+
+                        else if ( (LA21_0=='U') ) {s = 42;}
+
+                        else if ( (LA21_0=='{') ) {s = 43;}
+
+                        else if ( (LA21_0=='}') ) {s = 44;}
+
+                        else if ( (LA21_0=='u') ) {s = 45;}
+
+                        else if ( (LA21_0=='j') ) {s = 46;}
+
+                        else if ( (LA21_0=='o') ) {s = 47;}
+
+                        else if ( (LA21_0=='m') ) {s = 48;}
+
+                        else if ( (LA21_0=='(') ) {s = 49;}
+
+                        else if ( (LA21_0==')') ) {s = 50;}
+
+                        else if ( (LA21_0=='w') ) {s = 51;}
+
+                        else if ( (LA21_0=='@') ) {s = 52;}
+
+                        else if ( (LA21_0==',') ) {s = 53;}
+
+                        else if ( (LA21_0==']') ) {s = 54;}
+
+                        else if ( (LA21_0=='#') ) {s = 55;}
+
+                        else if ( (LA21_0=='[') ) {s = 56;}
+
+                        else if ( (LA21_0==';') ) {s = 57;}
+
+                        else if ( (LA21_0==':') ) {s = 58;}
+
+                        else if ( (LA21_0=='0') ) {s = 59;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 60;}
+
+                        else if ( (LA21_0=='^') ) {s = 61;}
+
+                        else if ( (LA21_0=='$'||LA21_0=='F'||(LA21_0>='H' && LA21_0<='M')||LA21_0=='O'||LA21_0=='Q'||(LA21_0>='V' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='k'||LA21_0=='q'||LA21_0=='x'||LA21_0=='z') ) {s = 62;}
+
+                        else if ( (LA21_0=='\"') ) {s = 63;}
+
+                        else if ( (LA21_0=='\'') ) {s = 64;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 65;}
+
+                        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 = 66;}
+
+                        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.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSLParser.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSLParser.java
new file mode 100644
index 0000000..c4b0afe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSLParser.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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.datamartdsl.services.DatamartDSLGrammarAccess;
+
+
+
+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")
+interface InternalDatamartDSLParserSignatures {
+     void entryRuleDatamartModel() throws RecognitionException;
+     void ruleDatamartModel() throws RecognitionException;
+     void entryRuleDatamartPackage() throws RecognitionException;
+     void ruleDatamartPackage() throws RecognitionException;
+     void entryRuleDatamartDefinition() throws RecognitionException;
+     void ruleDatamartDefinition() throws RecognitionException;
+     void entryRuleDatamartRole() throws RecognitionException;
+     void ruleDatamartRole() throws RecognitionException;
+     void entryRuleDatamartSource() throws RecognitionException;
+     void ruleDatamartSource() throws RecognitionException;
+     void entryRuleDatamartTask() throws RecognitionException;
+     void ruleDatamartTask() throws RecognitionException;
+     void entryRuleDatamartColumn() throws RecognitionException;
+     void ruleDatamartColumn() throws RecognitionException;
+     void entryRuleDatamartTaskFilter() throws RecognitionException;
+     void ruleDatamartTaskFilter() throws RecognitionException;
+     void entryRuleDatamartCube() throws RecognitionException;
+     void ruleDatamartCube() throws RecognitionException;
+     void entryRuleDatamartReference() throws RecognitionException;
+     void ruleDatamartReference() throws RecognitionException;
+     void entryRuleDatamartEntity() throws RecognitionException;
+     void ruleDatamartEntity() throws RecognitionException;
+     void entryRuleDatamartNavigation() throws RecognitionException;
+     void ruleDatamartNavigation() throws RecognitionException;
+     void entryRuleDatamartOwner() throws RecognitionException;
+     void ruleDatamartOwner() throws RecognitionException;
+     void entryRuleDatamartMember() throws RecognitionException;
+     void ruleDatamartMember() throws RecognitionException;
+     void entryRuleDatamartProperty() throws RecognitionException;
+     void ruleDatamartProperty() throws RecognitionException;
+     void entryRuleDatamartCondition() throws RecognitionException;
+     void ruleDatamartCondition() throws RecognitionException;
+     void entryRuleDatamartOrder() throws RecognitionException;
+     void ruleDatamartOrder() throws RecognitionException;
+     void entryRuleDatamartDisjunction() throws RecognitionException;
+     void ruleDatamartDisjunction() throws RecognitionException;
+     void entryRuleDatamartConjunction() throws RecognitionException;
+     void ruleDatamartConjunction() throws RecognitionException;
+     void entryRuleDatamartConditionalExpression() throws RecognitionException;
+     void ruleDatamartConditionalExpression() throws RecognitionException;
+     void entryRuleDatamartOperand() throws RecognitionException;
+     void ruleDatamartOperand() throws RecognitionException;
+     void entryRuleDatamartValue() throws RecognitionException;
+     void ruleDatamartValue() throws RecognitionException;
+     void entryRuleDatamartCubeElement() throws RecognitionException;
+     void ruleDatamartCubeElement() throws RecognitionException;
+     void entryRuleDatamartDefineDerivedMeasure() throws RecognitionException;
+     void ruleDatamartDefineDerivedMeasure() throws RecognitionException;
+     void entryRuleDatamartAddition() throws RecognitionException;
+     void ruleDatamartAddition() throws RecognitionException;
+     void entryRuleDatamartMultiplication() throws RecognitionException;
+     void ruleDatamartMultiplication() throws RecognitionException;
+     void entryRuleDatamartPrimary() throws RecognitionException;
+     void ruleDatamartPrimary() throws RecognitionException;
+     void entryRuleDatamartNumberOrElement() throws RecognitionException;
+     void ruleDatamartNumberOrElement() throws RecognitionException;
+     void entryRuleDatamartMemberTuple() throws RecognitionException;
+     void ruleDatamartMemberTuple() throws RecognitionException;
+     void entryRuleDatamartFunction() throws RecognitionException;
+     void ruleDatamartFunction() throws RecognitionException;
+     void entryRuleDatamartParameterFunction() throws RecognitionException;
+     void ruleDatamartParameterFunction() throws RecognitionException;
+     void entryRuleDatamartFunctionIntParameter() throws RecognitionException;
+     void ruleDatamartFunctionIntParameter() throws RecognitionException;
+     void entryRuleDatamartSetFunction() throws RecognitionException;
+     void ruleDatamartSetFunction() throws RecognitionException;
+     void entryRuleDatamartSetParameterFunction() throws RecognitionException;
+     void ruleDatamartSetParameterFunction() throws RecognitionException;
+     void entryRuleDatamartSetAggregationFunction() throws RecognitionException;
+     void ruleDatamartSetAggregationFunction() throws RecognitionException;
+     void entryRuleDatamartSetTuple() throws RecognitionException;
+     void ruleDatamartSetTuple() throws RecognitionException;
+     void entryRuleDatamartAggregationFunction() throws RecognitionException;
+     void ruleDatamartAggregationFunction() throws RecognitionException;
+     void entryRuleDatamartAggregation() throws RecognitionException;
+     void ruleDatamartAggregation() throws RecognitionException;
+     void entryRuleDatamartSetAggregation() throws RecognitionException;
+     void ruleDatamartSetAggregation() throws RecognitionException;
+     void entryRuleDatamartSlicer() throws RecognitionException;
+     void ruleDatamartSlicer() throws RecognitionException;
+     void entryRuleDatamartAxis() throws RecognitionException;
+     void ruleDatamartAxis() throws RecognitionException;
+     void entryRuleDatamartElement() throws RecognitionException;
+     void ruleDatamartElement() throws RecognitionException;
+     void entryRuleDatamartDerivedMeasure() throws RecognitionException;
+     void ruleDatamartDerivedMeasure() throws RecognitionException;
+     void entryRuleDatamartMeasure() throws RecognitionException;
+     void ruleDatamartMeasure() throws RecognitionException;
+     void entryRuleDatamartHierarchy() throws RecognitionException;
+     void ruleDatamartHierarchy() throws RecognitionException;
+     void entryRuleDatamartImport() throws RecognitionException;
+     void ruleDatamartImport() throws RecognitionException;
+     void entryRuleDatamartQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleDatamartQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() throws RecognitionException;
+     void entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleTRANSLATABLESTRING() throws RecognitionException;
+     void ruleTRANSLATABLESTRING() throws RecognitionException;
+     void entryRuleTRANSLATABLEID() throws RecognitionException;
+     void ruleTRANSLATABLEID() throws RecognitionException;
+     void entryRulePropertyFillerData() throws RecognitionException;
+     void rulePropertyFillerData() throws RecognitionException;
+     void entryRulePropertyFillerType() throws RecognitionException;
+     void rulePropertyFillerType() throws RecognitionException;
+     void entryRulePropertyFillerDateFuture() throws RecognitionException;
+     void rulePropertyFillerDateFuture() throws RecognitionException;
+     void entryRulePropertyFillerDatePast() throws RecognitionException;
+     void rulePropertyFillerDatePast() throws RecognitionException;
+     void entryRulePropertyFillerDateRange() throws RecognitionException;
+     void rulePropertyFillerDateRange() throws RecognitionException;
+     void entryRulePropertyFillerSignedDoubleRange() throws RecognitionException;
+     void rulePropertyFillerSignedDoubleRange() throws RecognitionException;
+     void entryRulePropertyFillerSignedDoubleRandom() throws RecognitionException;
+     void rulePropertyFillerSignedDoubleRandom() throws RecognitionException;
+     void entryRulePropertyFillerSignedIntegerRange() throws RecognitionException;
+     void rulePropertyFillerSignedIntegerRange() throws RecognitionException;
+     void entryRulePropertyFillerSignedIntegerRandom() throws RecognitionException;
+     void rulePropertyFillerSignedIntegerRandom() throws RecognitionException;
+     void entryRulePropertyFillerTextRandom() throws RecognitionException;
+     void rulePropertyFillerTextRandom() throws RecognitionException;
+     void entryRulePropertyFillerTextParagraphs() throws RecognitionException;
+     void rulePropertyFillerTextParagraphs() throws RecognitionException;
+     void entryRulePropertyFillerTextSentences() throws RecognitionException;
+     void rulePropertyFillerTextSentences() throws RecognitionException;
+     void entryRulePropertyFillerTextWords() throws RecognitionException;
+     void rulePropertyFillerTextWords() throws RecognitionException;
+     void entryRulePropertyFillerUnsignedDoubleRange() throws RecognitionException;
+     void rulePropertyFillerUnsignedDoubleRange() throws RecognitionException;
+     void entryRulePropertyFillerUnsignedDoubleRandom() throws RecognitionException;
+     void rulePropertyFillerUnsignedDoubleRandom() throws RecognitionException;
+     void entryRulePropertyFillerUnsignedIntegerRange() throws RecognitionException;
+     void rulePropertyFillerUnsignedIntegerRange() throws RecognitionException;
+     void entryRulePropertyFillerUnsignedIntegerRandom() throws RecognitionException;
+     void rulePropertyFillerUnsignedIntegerRandom() throws RecognitionException;
+     void entryRuleSignedNumber() throws RecognitionException;
+     void ruleSignedNumber() throws RecognitionException;
+     void entryRuleUnsignedNumber() throws RecognitionException;
+     void ruleUnsignedNumber() throws RecognitionException;
+     void entryRuleSINT() throws RecognitionException;
+     void ruleSINT() throws RecognitionException;
+     void entryRuleXAnnotation() throws RecognitionException;
+     void ruleXAnnotation() throws RecognitionException;
+     void entryRuleXAnnotationElementValuePair() throws RecognitionException;
+     void ruleXAnnotationElementValuePair() throws RecognitionException;
+     void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException;
+     void ruleXAnnotationElementValueOrCommaList() throws RecognitionException;
+     void entryRuleXAnnotationElementValue() throws RecognitionException;
+     void ruleXAnnotationElementValue() throws RecognitionException;
+     void entryRuleXAnnotationOrExpression() throws RecognitionException;
+     void ruleXAnnotationOrExpression() throws RecognitionException;
+     void entryRuleXExpression() throws RecognitionException;
+     void ruleXExpression() throws RecognitionException;
+     void entryRuleXAssignment() throws RecognitionException;
+     void ruleXAssignment() throws RecognitionException;
+     void entryRuleOpSingleAssign() throws RecognitionException;
+     void ruleOpSingleAssign() throws RecognitionException;
+     void entryRuleOpMultiAssign() throws RecognitionException;
+     void ruleOpMultiAssign() throws RecognitionException;
+     void entryRuleXOrExpression() throws RecognitionException;
+     void ruleXOrExpression() throws RecognitionException;
+     void entryRuleOpOr() throws RecognitionException;
+     void ruleOpOr() throws RecognitionException;
+     void entryRuleXAndExpression() throws RecognitionException;
+     void ruleXAndExpression() throws RecognitionException;
+     void entryRuleOpAnd() throws RecognitionException;
+     void ruleOpAnd() throws RecognitionException;
+     void entryRuleXEqualityExpression() throws RecognitionException;
+     void ruleXEqualityExpression() throws RecognitionException;
+     void entryRuleOpEquality() throws RecognitionException;
+     void ruleOpEquality() throws RecognitionException;
+     void entryRuleXRelationalExpression() throws RecognitionException;
+     void ruleXRelationalExpression() throws RecognitionException;
+     void entryRuleOpCompare() throws RecognitionException;
+     void ruleOpCompare() throws RecognitionException;
+     void entryRuleXOtherOperatorExpression() throws RecognitionException;
+     void ruleXOtherOperatorExpression() throws RecognitionException;
+     void entryRuleOpOther() throws RecognitionException;
+     void ruleOpOther() throws RecognitionException;
+     void entryRuleXAdditiveExpression() throws RecognitionException;
+     void ruleXAdditiveExpression() throws RecognitionException;
+     void entryRuleOpAdd() throws RecognitionException;
+     void ruleOpAdd() throws RecognitionException;
+     void entryRuleXMultiplicativeExpression() throws RecognitionException;
+     void ruleXMultiplicativeExpression() throws RecognitionException;
+     void entryRuleOpMulti() throws RecognitionException;
+     void ruleOpMulti() throws RecognitionException;
+     void entryRuleXUnaryOperation() throws RecognitionException;
+     void ruleXUnaryOperation() throws RecognitionException;
+     void entryRuleOpUnary() throws RecognitionException;
+     void ruleOpUnary() throws RecognitionException;
+     void entryRuleXCastedExpression() throws RecognitionException;
+     void ruleXCastedExpression() throws RecognitionException;
+     void entryRuleXPostfixOperation() throws RecognitionException;
+     void ruleXPostfixOperation() throws RecognitionException;
+     void entryRuleOpPostfix() throws RecognitionException;
+     void ruleOpPostfix() throws RecognitionException;
+     void entryRuleXMemberFeatureCall() throws RecognitionException;
+     void ruleXMemberFeatureCall() throws RecognitionException;
+     void entryRuleXPrimaryExpression() throws RecognitionException;
+     void ruleXPrimaryExpression() throws RecognitionException;
+     void entryRuleXLiteral() throws RecognitionException;
+     void ruleXLiteral() throws RecognitionException;
+     void entryRuleXCollectionLiteral() throws RecognitionException;
+     void ruleXCollectionLiteral() throws RecognitionException;
+     void entryRuleXSetLiteral() throws RecognitionException;
+     void ruleXSetLiteral() throws RecognitionException;
+     void entryRuleXListLiteral() throws RecognitionException;
+     void ruleXListLiteral() throws RecognitionException;
+     void entryRuleXClosure() throws RecognitionException;
+     void ruleXClosure() throws RecognitionException;
+     void entryRuleXExpressionInClosure() throws RecognitionException;
+     void ruleXExpressionInClosure() throws RecognitionException;
+     void entryRuleXShortClosure() throws RecognitionException;
+     void ruleXShortClosure() throws RecognitionException;
+     void entryRuleXParenthesizedExpression() throws RecognitionException;
+     void ruleXParenthesizedExpression() throws RecognitionException;
+     void entryRuleXIfExpression() throws RecognitionException;
+     void ruleXIfExpression() throws RecognitionException;
+     void entryRuleXSwitchExpression() throws RecognitionException;
+     void ruleXSwitchExpression() throws RecognitionException;
+     void entryRuleXCasePart() throws RecognitionException;
+     void ruleXCasePart() throws RecognitionException;
+     void entryRuleXForLoopExpression() throws RecognitionException;
+     void ruleXForLoopExpression() throws RecognitionException;
+     void entryRuleXBasicForLoopExpression() throws RecognitionException;
+     void ruleXBasicForLoopExpression() throws RecognitionException;
+     void entryRuleXWhileExpression() throws RecognitionException;
+     void ruleXWhileExpression() throws RecognitionException;
+     void entryRuleXDoWhileExpression() throws RecognitionException;
+     void ruleXDoWhileExpression() throws RecognitionException;
+     void entryRuleXBlockExpression() throws RecognitionException;
+     void ruleXBlockExpression() throws RecognitionException;
+     void entryRuleXExpressionOrVarDeclaration() throws RecognitionException;
+     void ruleXExpressionOrVarDeclaration() throws RecognitionException;
+     void entryRuleXVariableDeclaration() throws RecognitionException;
+     void ruleXVariableDeclaration() throws RecognitionException;
+     void entryRuleJvmFormalParameter() throws RecognitionException;
+     void ruleJvmFormalParameter() throws RecognitionException;
+     void entryRuleFullJvmFormalParameter() throws RecognitionException;
+     void ruleFullJvmFormalParameter() throws RecognitionException;
+     void entryRuleXFeatureCall() throws RecognitionException;
+     void ruleXFeatureCall() throws RecognitionException;
+     void entryRuleFeatureCallID() throws RecognitionException;
+     void ruleFeatureCallID() throws RecognitionException;
+     void entryRuleIdOrSuper() throws RecognitionException;
+     void ruleIdOrSuper() throws RecognitionException;
+     void entryRuleXConstructorCall() throws RecognitionException;
+     void ruleXConstructorCall() throws RecognitionException;
+     void entryRuleXBooleanLiteral() throws RecognitionException;
+     void ruleXBooleanLiteral() throws RecognitionException;
+     void entryRuleXNullLiteral() throws RecognitionException;
+     void ruleXNullLiteral() throws RecognitionException;
+     void entryRuleXNumberLiteral() throws RecognitionException;
+     void ruleXNumberLiteral() throws RecognitionException;
+     void entryRuleXStringLiteral() throws RecognitionException;
+     void ruleXStringLiteral() throws RecognitionException;
+     void entryRuleXTypeLiteral() throws RecognitionException;
+     void ruleXTypeLiteral() throws RecognitionException;
+     void entryRuleXThrowExpression() throws RecognitionException;
+     void ruleXThrowExpression() throws RecognitionException;
+     void entryRuleXReturnExpression() throws RecognitionException;
+     void ruleXReturnExpression() throws RecognitionException;
+     void entryRuleXTryCatchFinallyExpression() throws RecognitionException;
+     void ruleXTryCatchFinallyExpression() throws RecognitionException;
+     void entryRuleXSynchronizedExpression() throws RecognitionException;
+     void ruleXSynchronizedExpression() throws RecognitionException;
+     void entryRuleXCatchClause() throws RecognitionException;
+     void ruleXCatchClause() throws RecognitionException;
+     void entryRuleNumber() throws RecognitionException;
+     void ruleNumber() throws RecognitionException;
+     void entryRuleJvmTypeReference() throws RecognitionException;
+     void ruleJvmTypeReference() throws RecognitionException;
+     void entryRuleArrayBrackets() throws RecognitionException;
+     void ruleArrayBrackets() throws RecognitionException;
+     void entryRuleXFunctionTypeRef() throws RecognitionException;
+     void ruleXFunctionTypeRef() throws RecognitionException;
+     void entryRuleJvmParameterizedTypeReference() throws RecognitionException;
+     void ruleJvmParameterizedTypeReference() throws RecognitionException;
+     void entryRuleJvmArgumentTypeReference() throws RecognitionException;
+     void ruleJvmArgumentTypeReference() throws RecognitionException;
+     void entryRuleJvmWildcardTypeReference() throws RecognitionException;
+     void ruleJvmWildcardTypeReference() throws RecognitionException;
+     void entryRuleJvmUpperBound() throws RecognitionException;
+     void ruleJvmUpperBound() throws RecognitionException;
+     void entryRuleJvmUpperBoundAnded() throws RecognitionException;
+     void ruleJvmUpperBoundAnded() throws RecognitionException;
+     void entryRuleJvmLowerBound() throws RecognitionException;
+     void ruleJvmLowerBound() throws RecognitionException;
+     void entryRuleJvmLowerBoundAnded() throws RecognitionException;
+     void ruleJvmLowerBoundAnded() throws RecognitionException;
+     void entryRuleQualifiedNameWithWildcard() throws RecognitionException;
+     void ruleQualifiedNameWithWildcard() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleAxisEnum() throws RecognitionException;
+     void ruleFunctionEnum() throws RecognitionException;
+     void ruleParameterFunctionEnum() throws RecognitionException;
+     void ruleSetFunctionEnum() throws RecognitionException;
+     void ruleSetParameterFunctionEnum() throws RecognitionException;
+     void ruleSetAggregationEnum() throws RecognitionException;
+     void ruleAggregationEnum() throws RecognitionException;
+     void ruleOperatorEnum() throws RecognitionException;
+     void ruleSqlAggregationEnum() throws RecognitionException;
+     void ruleValueScaleEnum() throws RecognitionException;
+     void ruleTaskQueryTopicEnum() throws RecognitionException;
+     void ruleTaskQueryColumnEnum() throws RecognitionException;
+     void ruleTaskFilterEnum() throws RecognitionException;
+     void ruleOrderEnum() throws RecognitionException;
+     void rule__DatamartSource__Alternatives() throws RecognitionException;
+     void rule__DatamartNavigation__Alternatives() throws RecognitionException;
+     void rule__DatamartOperand__Alternatives() throws RecognitionException;
+     void rule__DatamartValue__Alternatives() throws RecognitionException;
+     void rule__DatamartValue__Alternatives_2() throws RecognitionException;
+     void rule__DatamartCubeElement__Alternatives() throws RecognitionException;
+     void rule__DatamartAddition__Alternatives_1_0() throws RecognitionException;
+     void rule__DatamartMultiplication__Alternatives_1_0() throws RecognitionException;
+     void rule__DatamartPrimary__Alternatives() throws RecognitionException;
+     void rule__DatamartNumberOrElement__Alternatives() throws RecognitionException;
+     void rule__DatamartMemberTuple__Alternatives_0_0() throws RecognitionException;
+     void rule__DatamartSetTuple__Alternatives_0() throws RecognitionException;
+     void rule__DatamartAggregation__Alternatives_2() throws RecognitionException;
+     void rule__DatamartSetAggregation__Alternatives_2() throws RecognitionException;
+     void rule__DatamartElement__Alternatives() throws RecognitionException;
+     void rule__DatamartHierarchy__Alternatives_5_2() throws RecognitionException;
+     void rule__DatamartHierarchy__OrderRefAlternatives_6_2_1_0() throws RecognitionException;
+     void rule__PropertyFillerType__Alternatives() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Alternatives_1_0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Alternatives_1_2() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Alternatives_2_0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Alternatives_2_2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2() throws RecognitionException;
+     void rule__XAnnotation__Alternatives_3_1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException;
+     void rule__XAnnotationElementValue__Alternatives() throws RecognitionException;
+     void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException;
+     void rule__XAssignment__Alternatives() throws RecognitionException;
+     void rule__OpMultiAssign__Alternatives() throws RecognitionException;
+     void rule__OpEquality__Alternatives() throws RecognitionException;
+     void rule__XRelationalExpression__Alternatives_1() throws RecognitionException;
+     void rule__OpCompare__Alternatives() throws RecognitionException;
+     void rule__OpOther__Alternatives() throws RecognitionException;
+     void rule__OpOther__Alternatives_5_1() throws RecognitionException;
+     void rule__OpOther__Alternatives_6_1() throws RecognitionException;
+     void rule__OpAdd__Alternatives() throws RecognitionException;
+     void rule__OpMulti__Alternatives() throws RecognitionException;
+     void rule__XUnaryOperation__Alternatives() throws RecognitionException;
+     void rule__OpUnary__Alternatives() throws RecognitionException;
+     void rule__OpPostfix__Alternatives() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException;
+     void rule__XPrimaryExpression__Alternatives() throws RecognitionException;
+     void rule__XLiteral__Alternatives() throws RecognitionException;
+     void rule__XCollectionLiteral__Alternatives() throws RecognitionException;
+     void rule__XSwitchExpression__Alternatives_2() throws RecognitionException;
+     void rule__XCasePart__Alternatives_3() throws RecognitionException;
+     void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException;
+     void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException;
+     void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException;
+     void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException;
+     void rule__FeatureCallID__Alternatives() throws RecognitionException;
+     void rule__IdOrSuper__Alternatives() throws RecognitionException;
+     void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException;
+     void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException;
+     void rule__Number__Alternatives() throws RecognitionException;
+     void rule__Number__Alternatives_1_0() throws RecognitionException;
+     void rule__Number__Alternatives_1_1_1() throws RecognitionException;
+     void rule__JvmTypeReference__Alternatives() throws RecognitionException;
+     void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException;
+     void rule__XImportDeclaration__Alternatives_1() throws RecognitionException;
+     void rule__XImportDeclaration__Alternatives_1_0_3() throws RecognitionException;
+     void rule__AxisEnum__Alternatives() throws RecognitionException;
+     void rule__FunctionEnum__Alternatives() throws RecognitionException;
+     void rule__ParameterFunctionEnum__Alternatives() throws RecognitionException;
+     void rule__SetFunctionEnum__Alternatives() throws RecognitionException;
+     void rule__SetParameterFunctionEnum__Alternatives() throws RecognitionException;
+     void rule__SetAggregationEnum__Alternatives() throws RecognitionException;
+     void rule__AggregationEnum__Alternatives() throws RecognitionException;
+     void rule__OperatorEnum__Alternatives() throws RecognitionException;
+     void rule__SqlAggregationEnum__Alternatives() throws RecognitionException;
+     void rule__ValueScaleEnum__Alternatives() throws RecognitionException;
+     void rule__TaskQueryTopicEnum__Alternatives() throws RecognitionException;
+     void rule__TaskQueryColumnEnum__Alternatives() throws RecognitionException;
+     void rule__TaskFilterEnum__Alternatives() throws RecognitionException;
+     void rule__OrderEnum__Alternatives() throws RecognitionException;
+     void rule__DatamartPackage__Group__0() throws RecognitionException;
+     void rule__DatamartPackage__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group__1() throws RecognitionException;
+     void rule__DatamartPackage__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group__2() throws RecognitionException;
+     void rule__DatamartPackage__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group__3() throws RecognitionException;
+     void rule__DatamartPackage__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__0() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__1() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__2() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__3() throws RecognitionException;
+     void rule__DatamartPackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group__0() throws RecognitionException;
+     void rule__DatamartDefinition__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group__1() throws RecognitionException;
+     void rule__DatamartDefinition__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group__2() throws RecognitionException;
+     void rule__DatamartDefinition__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group__3() throws RecognitionException;
+     void rule__DatamartDefinition__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group__4() throws RecognitionException;
+     void rule__DatamartDefinition__Group__4__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group__5() throws RecognitionException;
+     void rule__DatamartDefinition__Group__5__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group_2__0() throws RecognitionException;
+     void rule__DatamartDefinition__Group_2__0__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group_2__1() throws RecognitionException;
+     void rule__DatamartDefinition__Group_2__1__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__0() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__0__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__1() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__1__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__2() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__2__Impl() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__3() throws RecognitionException;
+     void rule__DatamartDefinition__Group_3__3__Impl() throws RecognitionException;
+     void rule__DatamartRole__Group__0() throws RecognitionException;
+     void rule__DatamartRole__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartRole__Group__1() throws RecognitionException;
+     void rule__DatamartRole__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group__0() throws RecognitionException;
+     void rule__DatamartTask__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group__1() throws RecognitionException;
+     void rule__DatamartTask__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group__2() throws RecognitionException;
+     void rule__DatamartTask__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group__3() throws RecognitionException;
+     void rule__DatamartTask__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_2__0() throws RecognitionException;
+     void rule__DatamartTask__Group_2__0__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_2__1() throws RecognitionException;
+     void rule__DatamartTask__Group_2__1__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_2__2() throws RecognitionException;
+     void rule__DatamartTask__Group_2__2__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_2__3() throws RecognitionException;
+     void rule__DatamartTask__Group_2__3__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_3__0() throws RecognitionException;
+     void rule__DatamartTask__Group_3__0__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_3__1() throws RecognitionException;
+     void rule__DatamartTask__Group_3__1__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_3__2() throws RecognitionException;
+     void rule__DatamartTask__Group_3__2__Impl() throws RecognitionException;
+     void rule__DatamartTask__Group_3__3() throws RecognitionException;
+     void rule__DatamartTask__Group_3__3__Impl() throws RecognitionException;
+     void rule__DatamartColumn__Group__0() throws RecognitionException;
+     void rule__DatamartColumn__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartColumn__Group__1() throws RecognitionException;
+     void rule__DatamartColumn__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartTaskFilter__Group__0() throws RecognitionException;
+     void rule__DatamartTaskFilter__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartTaskFilter__Group__1() throws RecognitionException;
+     void rule__DatamartTaskFilter__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartCube__Group__0() throws RecognitionException;
+     void rule__DatamartCube__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartCube__Group__1() throws RecognitionException;
+     void rule__DatamartCube__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartCube__Group__2() throws RecognitionException;
+     void rule__DatamartCube__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartCube__Group__3() throws RecognitionException;
+     void rule__DatamartCube__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartCube__Group__4() throws RecognitionException;
+     void rule__DatamartCube__Group__4__Impl() throws RecognitionException;
+     void rule__DatamartCube__Group__5() throws RecognitionException;
+     void rule__DatamartCube__Group__5__Impl() throws RecognitionException;
+     void rule__DatamartReference__Group__0() throws RecognitionException;
+     void rule__DatamartReference__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartReference__Group__1() throws RecognitionException;
+     void rule__DatamartReference__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__0() throws RecognitionException;
+     void rule__DatamartEntity__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__1() throws RecognitionException;
+     void rule__DatamartEntity__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__2() throws RecognitionException;
+     void rule__DatamartEntity__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__3() throws RecognitionException;
+     void rule__DatamartEntity__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__4() throws RecognitionException;
+     void rule__DatamartEntity__Group__4__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__5() throws RecognitionException;
+     void rule__DatamartEntity__Group__5__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__6() throws RecognitionException;
+     void rule__DatamartEntity__Group__6__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__7() throws RecognitionException;
+     void rule__DatamartEntity__Group__7__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__8() throws RecognitionException;
+     void rule__DatamartEntity__Group__8__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group__9() throws RecognitionException;
+     void rule__DatamartEntity__Group__9__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__0() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__0__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__1() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__2() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__2__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__3() throws RecognitionException;
+     void rule__DatamartEntity__Group_4__3__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__0() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__0__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__1() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__2() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__2__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__3() throws RecognitionException;
+     void rule__DatamartEntity__Group_5__3__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__0() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__0__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__1() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__2() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__2__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__3() throws RecognitionException;
+     void rule__DatamartEntity__Group_6__3__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__0() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__0__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__1() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__2() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__2__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__3() throws RecognitionException;
+     void rule__DatamartEntity__Group_7__3__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__0() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__0__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__1() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__1__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__2() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__2__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__3() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__3__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__4() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__4__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__5() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__5__Impl() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__6() throws RecognitionException;
+     void rule__DatamartEntity__Group_8__6__Impl() throws RecognitionException;
+     void rule__DatamartOwner__Group__0() throws RecognitionException;
+     void rule__DatamartOwner__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartOwner__Group__1() throws RecognitionException;
+     void rule__DatamartOwner__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartOwner__Group__2() throws RecognitionException;
+     void rule__DatamartOwner__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartOwner__Group__3() throws RecognitionException;
+     void rule__DatamartOwner__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartMember__Group__0() throws RecognitionException;
+     void rule__DatamartMember__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartMember__Group__1() throws RecognitionException;
+     void rule__DatamartMember__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartMember__Group__2() throws RecognitionException;
+     void rule__DatamartMember__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartMember__Group__3() throws RecognitionException;
+     void rule__DatamartMember__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group__0() throws RecognitionException;
+     void rule__DatamartProperty__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group__1() throws RecognitionException;
+     void rule__DatamartProperty__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group__2() throws RecognitionException;
+     void rule__DatamartProperty__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_0__0() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_0__1() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_1__0() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_1__1() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_2__0() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_2__1() throws RecognitionException;
+     void rule__DatamartProperty__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DatamartCondition__Group__0() throws RecognitionException;
+     void rule__DatamartCondition__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartCondition__Group__1() throws RecognitionException;
+     void rule__DatamartCondition__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartOrder__Group__0() throws RecognitionException;
+     void rule__DatamartOrder__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartOrder__Group__1() throws RecognitionException;
+     void rule__DatamartOrder__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartOrder__Group__2() throws RecognitionException;
+     void rule__DatamartOrder__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartDisjunction__Group__0() throws RecognitionException;
+     void rule__DatamartDisjunction__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartDisjunction__Group__1() throws RecognitionException;
+     void rule__DatamartDisjunction__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1__0() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1__1() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1_0__0() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1_0__1() throws RecognitionException;
+     void rule__DatamartDisjunction__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__DatamartConjunction__Group__0() throws RecognitionException;
+     void rule__DatamartConjunction__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartConjunction__Group__1() throws RecognitionException;
+     void rule__DatamartConjunction__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1__0() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1__1() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1_0__0() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1_0__1() throws RecognitionException;
+     void rule__DatamartConjunction__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group__0() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group__1() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1__0() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1__1() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1_0__0() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1_0__1() throws RecognitionException;
+     void rule__DatamartConditionalExpression__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__DatamartOperand__Group_1__0() throws RecognitionException;
+     void rule__DatamartOperand__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartOperand__Group_1__1() throws RecognitionException;
+     void rule__DatamartOperand__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartOperand__Group_1__2() throws RecognitionException;
+     void rule__DatamartOperand__Group_1__2__Impl() throws RecognitionException;
+     void rule__DatamartValue__Group_2_0__0() throws RecognitionException;
+     void rule__DatamartValue__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DatamartValue__Group_2_0__1() throws RecognitionException;
+     void rule__DatamartValue__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__0() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__1() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__2() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__3() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group__0() throws RecognitionException;
+     void rule__DatamartAddition__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group__1() throws RecognitionException;
+     void rule__DatamartAddition__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group_1__0() throws RecognitionException;
+     void rule__DatamartAddition__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group_1__1() throws RecognitionException;
+     void rule__DatamartAddition__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_0__0() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_0__1() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_1__0() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_1__0__Impl() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_1__1() throws RecognitionException;
+     void rule__DatamartAddition__Group_1_0_1__1__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group__0() throws RecognitionException;
+     void rule__DatamartMultiplication__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group__1() throws RecognitionException;
+     void rule__DatamartMultiplication__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1__0() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1__1() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_0__0() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_0__1() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_1__0() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_1__0__Impl() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_1__1() throws RecognitionException;
+     void rule__DatamartMultiplication__Group_1_0_1__1__Impl() throws RecognitionException;
+     void rule__DatamartPrimary__Group_1__0() throws RecognitionException;
+     void rule__DatamartPrimary__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartPrimary__Group_1__1() throws RecognitionException;
+     void rule__DatamartPrimary__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartPrimary__Group_1__2() throws RecognitionException;
+     void rule__DatamartPrimary__Group_1__2__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group__0() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group__1() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group__2() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_0__0() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_0__0__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_0__1() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_0__1__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_2__0() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_2__0__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_2__1() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_2__1__Impl() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_2__2() throws RecognitionException;
+     void rule__DatamartMemberTuple__Group_2__2__Impl() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__0() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__1() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__2() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__3() throws RecognitionException;
+     void rule__DatamartParameterFunction__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__0() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__1() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__2() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__3() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__0() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__1() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__2() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__3() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartSetTuple__Group__0() throws RecognitionException;
+     void rule__DatamartSetTuple__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartSetTuple__Group__1() throws RecognitionException;
+     void rule__DatamartSetTuple__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartSetTuple__Group_1__0() throws RecognitionException;
+     void rule__DatamartSetTuple__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartSetTuple__Group_1__1() throws RecognitionException;
+     void rule__DatamartSetTuple__Group_1__1__Impl() throws RecognitionException;
+     void rule__DatamartSetTuple__Group_1__2() throws RecognitionException;
+     void rule__DatamartSetTuple__Group_1__2__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group__0() throws RecognitionException;
+     void rule__DatamartAggregation__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group__1() throws RecognitionException;
+     void rule__DatamartAggregation__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group__2() throws RecognitionException;
+     void rule__DatamartAggregation__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group__3() throws RecognitionException;
+     void rule__DatamartAggregation__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group_3__0() throws RecognitionException;
+     void rule__DatamartAggregation__Group_3__0__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group_3__1() throws RecognitionException;
+     void rule__DatamartAggregation__Group_3__1__Impl() throws RecognitionException;
+     void rule__DatamartAggregation__Group_3__2() throws RecognitionException;
+     void rule__DatamartAggregation__Group_3__2__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__0() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__1() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__2() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__3() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group_3__0() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group_3__0__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group_3__1() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group_3__1__Impl() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group_3__2() throws RecognitionException;
+     void rule__DatamartSetAggregation__Group_3__2__Impl() throws RecognitionException;
+     void rule__DatamartSlicer__Group__0() throws RecognitionException;
+     void rule__DatamartSlicer__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartSlicer__Group__1() throws RecognitionException;
+     void rule__DatamartSlicer__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartAxis__Group__0() throws RecognitionException;
+     void rule__DatamartAxis__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartAxis__Group__1() throws RecognitionException;
+     void rule__DatamartAxis__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartAxis__Group__2() throws RecognitionException;
+     void rule__DatamartAxis__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartAxis__Group__3() throws RecognitionException;
+     void rule__DatamartAxis__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartAxis__Group__4() throws RecognitionException;
+     void rule__DatamartAxis__Group__4__Impl() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group__0() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group__1() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group__2() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group_2__0() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group_2__0__Impl() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group_2__1() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__Group_2__1__Impl() throws RecognitionException;
+     void rule__DatamartMeasure__Group__0() throws RecognitionException;
+     void rule__DatamartMeasure__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartMeasure__Group__1() throws RecognitionException;
+     void rule__DatamartMeasure__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartMeasure__Group__2() throws RecognitionException;
+     void rule__DatamartMeasure__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartMeasure__Group_2__0() throws RecognitionException;
+     void rule__DatamartMeasure__Group_2__0__Impl() throws RecognitionException;
+     void rule__DatamartMeasure__Group_2__1() throws RecognitionException;
+     void rule__DatamartMeasure__Group_2__1__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__0() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__1() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__2() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__2__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__3() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__3__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__4() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__4__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__5() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__5__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__6() throws RecognitionException;
+     void rule__DatamartHierarchy__Group__6__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_5__0() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_5__0__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_5__1() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_5__1__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_5__2() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_5__2__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6__0() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6__0__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6__1() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6__1__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6__2() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6__2__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_1__0() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_1__1() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_2__0() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_2__1() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_2__2() throws RecognitionException;
+     void rule__DatamartHierarchy__Group_6_2__2__Impl() throws RecognitionException;
+     void rule__DatamartImport__Group__0() throws RecognitionException;
+     void rule__DatamartImport__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartImport__Group__1() throws RecognitionException;
+     void rule__DatamartImport__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__DatamartQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group__0() throws RecognitionException;
+     void rule__QualifiedName__Group__0__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group__1() throws RecognitionException;
+     void rule__QualifiedName__Group__1__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group_1__0() throws RecognitionException;
+     void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException;
+     void rule__QualifiedName__Group_1__1() throws RecognitionException;
+     void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerData__Group__0() throws RecognitionException;
+     void rule__PropertyFillerData__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerData__Group__1() throws RecognitionException;
+     void rule__PropertyFillerData__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerData__Group__2() throws RecognitionException;
+     void rule__PropertyFillerData__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerData__Group__3() throws RecognitionException;
+     void rule__PropertyFillerData__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__Group__0() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__Group__1() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__Group__2() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerDatePast__Group__0() throws RecognitionException;
+     void rule__PropertyFillerDatePast__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerDatePast__Group__1() throws RecognitionException;
+     void rule__PropertyFillerDatePast__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerDatePast__Group__2() throws RecognitionException;
+     void rule__PropertyFillerDatePast__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__0() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__1() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__2() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__3() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__4() throws RecognitionException;
+     void rule__PropertyFillerDateRange__Group__4__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__2() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__3() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__4() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__4__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__5() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group__5__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_1__0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_1__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_1__1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_1__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_1__2() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_1__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_5__0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_5__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_5__1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__Group_5__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__2() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__3() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__2() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__3() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_2__0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_2__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_2__1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_2__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_2__2() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_2__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_3__0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_3__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_3__1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__Group_3__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__2() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__3() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__0() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__1() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__2() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__3() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__Group__0() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__Group__1() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__Group__2() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__Group__0() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__Group__1() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__Group__2() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextWords__Group__0() throws RecognitionException;
+     void rule__PropertyFillerTextWords__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextWords__Group__1() throws RecognitionException;
+     void rule__PropertyFillerTextWords__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerTextWords__Group__2() throws RecognitionException;
+     void rule__PropertyFillerTextWords__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__3() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__4() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__4__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__5() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group__5__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_1__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_1__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_1__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_1__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_1__2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_1__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_5__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_5__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_5__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__Group_5__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__3() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__3() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group__3__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_2__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_2__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_2__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_2__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_2__2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_2__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_3__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_3__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_3__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__Group_3__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__0__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__1__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__3() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__Group__3__Impl() throws RecognitionException;
+     void rule__SignedNumber__Group__0() throws RecognitionException;
+     void rule__SignedNumber__Group__0__Impl() throws RecognitionException;
+     void rule__SignedNumber__Group__1() throws RecognitionException;
+     void rule__SignedNumber__Group__1__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group__0() throws RecognitionException;
+     void rule__UnsignedNumber__Group__0__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group__1() throws RecognitionException;
+     void rule__UnsignedNumber__Group__1__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__0() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__0__Impl() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__1() throws RecognitionException;
+     void rule__UnsignedNumber__Group_1__1__Impl() throws RecognitionException;
+     void rule__SINT__Group__0() throws RecognitionException;
+     void rule__SINT__Group__0__Impl() throws RecognitionException;
+     void rule__SINT__Group__1() throws RecognitionException;
+     void rule__SINT__Group__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__0() throws RecognitionException;
+     void rule__XAnnotation__Group__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__1() throws RecognitionException;
+     void rule__XAnnotation__Group__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__2() throws RecognitionException;
+     void rule__XAnnotation__Group__2__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group__3() throws RecognitionException;
+     void rule__XAnnotation__Group__3__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3__0() throws RecognitionException;
+     void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3__1() throws RecognitionException;
+     void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3__2() throws RecognitionException;
+     void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException;
+     void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException;
+     void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__0() throws RecognitionException;
+     void rule__XAssignment__Group_0__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__1() throws RecognitionException;
+     void rule__XAssignment__Group_0__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__2() throws RecognitionException;
+     void rule__XAssignment__Group_0__2__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_0__3() throws RecognitionException;
+     void rule__XAssignment__Group_0__3__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1__0() throws RecognitionException;
+     void rule__XAssignment__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1__1() throws RecognitionException;
+     void rule__XAssignment__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__0() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__1() throws RecognitionException;
+     void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0__0() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException;
+     void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__0() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__1() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__2() throws RecognitionException;
+     void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__0() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__1() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__2() throws RecognitionException;
+     void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group__0() throws RecognitionException;
+     void rule__XOrExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group__1() throws RecognitionException;
+     void rule__XOrExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1__0() throws RecognitionException;
+     void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1__1() throws RecognitionException;
+     void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group__0() throws RecognitionException;
+     void rule__XAndExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group__1() throws RecognitionException;
+     void rule__XAndExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1__0() throws RecognitionException;
+     void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1__1() throws RecognitionException;
+     void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group__1() throws RecognitionException;
+     void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__1() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException;
+     void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpCompare__Group_1__0() throws RecognitionException;
+     void rule__OpCompare__Group_1__0__Impl() throws RecognitionException;
+     void rule__OpCompare__Group_1__1() throws RecognitionException;
+     void rule__OpCompare__Group_1__1__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_2__0() throws RecognitionException;
+     void rule__OpOther__Group_2__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_2__1() throws RecognitionException;
+     void rule__OpOther__Group_2__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5__0() throws RecognitionException;
+     void rule__OpOther__Group_5__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5__1() throws RecognitionException;
+     void rule__OpOther__Group_5__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0__0() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException;
+     void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6__0() throws RecognitionException;
+     void rule__OpOther__Group_6__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6__1() throws RecognitionException;
+     void rule__OpOther__Group_6__1__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0__0() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException;
+     void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__1() throws RecognitionException;
+     void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__1() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__0() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__1() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__2() throws RecognitionException;
+     void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group__0() throws RecognitionException;
+     void rule__XCastedExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group__1() throws RecognitionException;
+     void rule__XCastedExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__0() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__1() throws RecognitionException;
+     void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0__0() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException;
+     void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group__0() throws RecognitionException;
+     void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group__1() throws RecognitionException;
+     void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1__0() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException;
+     void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException;
+     void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__0() throws RecognitionException;
+     void rule__XSetLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__1() throws RecognitionException;
+     void rule__XSetLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__2() throws RecognitionException;
+     void rule__XSetLiteral__Group__2__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__3() throws RecognitionException;
+     void rule__XSetLiteral__Group__3__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group__4() throws RecognitionException;
+     void rule__XSetLiteral__Group__4__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__0() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__1() throws RecognitionException;
+     void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__0() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__1() throws RecognitionException;
+     void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__0() throws RecognitionException;
+     void rule__XListLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__1() throws RecognitionException;
+     void rule__XListLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__2() throws RecognitionException;
+     void rule__XListLiteral__Group__2__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__3() throws RecognitionException;
+     void rule__XListLiteral__Group__3__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group__4() throws RecognitionException;
+     void rule__XListLiteral__Group__4__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3__0() throws RecognitionException;
+     void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3__1() throws RecognitionException;
+     void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__0() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__1() throws RecognitionException;
+     void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group__0() throws RecognitionException;
+     void rule__XClosure__Group__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group__1() throws RecognitionException;
+     void rule__XClosure__Group__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group__2() throws RecognitionException;
+     void rule__XClosure__Group__2__Impl() throws RecognitionException;
+     void rule__XClosure__Group__3() throws RecognitionException;
+     void rule__XClosure__Group__3__Impl() throws RecognitionException;
+     void rule__XClosure__Group_0__0() throws RecognitionException;
+     void rule__XClosure__Group_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_0_0__0() throws RecognitionException;
+     void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_0_0__1() throws RecognitionException;
+     void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1__0() throws RecognitionException;
+     void rule__XClosure__Group_1__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0__0() throws RecognitionException;
+     void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0__1() throws RecognitionException;
+     void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__0() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__1() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException;
+     void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__0() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__1() throws RecognitionException;
+     void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__0() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__1() throws RecognitionException;
+     void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group__0() throws RecognitionException;
+     void rule__XShortClosure__Group__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group__1() throws RecognitionException;
+     void rule__XShortClosure__Group__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__1() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__2() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException;
+     void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__0() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__1() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__2() throws RecognitionException;
+     void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__0() throws RecognitionException;
+     void rule__XIfExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__1() throws RecognitionException;
+     void rule__XIfExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__2() throws RecognitionException;
+     void rule__XIfExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__3() throws RecognitionException;
+     void rule__XIfExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__4() throws RecognitionException;
+     void rule__XIfExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__5() throws RecognitionException;
+     void rule__XIfExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group__6() throws RecognitionException;
+     void rule__XIfExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group_6__0() throws RecognitionException;
+     void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException;
+     void rule__XIfExpression__Group_6__1() throws RecognitionException;
+     void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__3() throws RecognitionException;
+     void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__4() throws RecognitionException;
+     void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__5() throws RecognitionException;
+     void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group__6() throws RecognitionException;
+     void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__0() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__1() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__2() throws RecognitionException;
+     void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__0() throws RecognitionException;
+     void rule__XCasePart__Group__0__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__1() throws RecognitionException;
+     void rule__XCasePart__Group__1__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__2() throws RecognitionException;
+     void rule__XCasePart__Group__2__Impl() throws RecognitionException;
+     void rule__XCasePart__Group__3() throws RecognitionException;
+     void rule__XCasePart__Group__3__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_2__0() throws RecognitionException;
+     void rule__XCasePart__Group_2__0__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_2__1() throws RecognitionException;
+     void rule__XCasePart__Group_2__1__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__0() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__1() throws RecognitionException;
+     void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__0() throws RecognitionException;
+     void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__1() throws RecognitionException;
+     void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__2() throws RecognitionException;
+     void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group__3() throws RecognitionException;
+     void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0__0() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException;
+     void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__2() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__3() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__4() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__5() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__6() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__7() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__8() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__9() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__0() throws RecognitionException;
+     void rule__XWhileExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__1() throws RecognitionException;
+     void rule__XWhileExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__2() throws RecognitionException;
+     void rule__XWhileExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__3() throws RecognitionException;
+     void rule__XWhileExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__4() throws RecognitionException;
+     void rule__XWhileExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XWhileExpression__Group__5() throws RecognitionException;
+     void rule__XWhileExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__0() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__1() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__2() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__3() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__4() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__5() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__6() throws RecognitionException;
+     void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__0() throws RecognitionException;
+     void rule__XBlockExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__1() throws RecognitionException;
+     void rule__XBlockExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__2() throws RecognitionException;
+     void rule__XBlockExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group__3() throws RecognitionException;
+     void rule__XBlockExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__0() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__1() throws RecognitionException;
+     void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__1() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__2() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__3() throws RecognitionException;
+     void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__0() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__1() throws RecognitionException;
+     void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__0() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__1() throws RecognitionException;
+     void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__0() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__1() throws RecognitionException;
+     void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__0() throws RecognitionException;
+     void rule__XFeatureCall__Group__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__1() throws RecognitionException;
+     void rule__XFeatureCall__Group__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__2() throws RecognitionException;
+     void rule__XFeatureCall__Group__2__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__3() throws RecognitionException;
+     void rule__XFeatureCall__Group__3__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group__4() throws RecognitionException;
+     void rule__XFeatureCall__Group__4__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__2() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__3() throws RecognitionException;
+     void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__2() throws RecognitionException;
+     void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException;
+     void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__0() throws RecognitionException;
+     void rule__XConstructorCall__Group__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__1() throws RecognitionException;
+     void rule__XConstructorCall__Group__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__2() throws RecognitionException;
+     void rule__XConstructorCall__Group__2__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__3() throws RecognitionException;
+     void rule__XConstructorCall__Group__3__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__4() throws RecognitionException;
+     void rule__XConstructorCall__Group__4__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group__5() throws RecognitionException;
+     void rule__XConstructorCall__Group__5__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__2() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__3() throws RecognitionException;
+     void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__2() throws RecognitionException;
+     void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException;
+     void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__0() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__1() throws RecognitionException;
+     void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XNullLiteral__Group__0() throws RecognitionException;
+     void rule__XNullLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XNullLiteral__Group__1() throws RecognitionException;
+     void rule__XNullLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XNumberLiteral__Group__0() throws RecognitionException;
+     void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XNumberLiteral__Group__1() throws RecognitionException;
+     void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XStringLiteral__Group__0() throws RecognitionException;
+     void rule__XStringLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XStringLiteral__Group__1() throws RecognitionException;
+     void rule__XStringLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__0() throws RecognitionException;
+     void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__1() throws RecognitionException;
+     void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__2() throws RecognitionException;
+     void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__3() throws RecognitionException;
+     void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__4() throws RecognitionException;
+     void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException;
+     void rule__XTypeLiteral__Group__5() throws RecognitionException;
+     void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException;
+     void rule__XThrowExpression__Group__0() throws RecognitionException;
+     void rule__XThrowExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XThrowExpression__Group__1() throws RecognitionException;
+     void rule__XThrowExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XThrowExpression__Group__2() throws RecognitionException;
+     void rule__XThrowExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XReturnExpression__Group__0() throws RecognitionException;
+     void rule__XReturnExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XReturnExpression__Group__1() throws RecognitionException;
+     void rule__XReturnExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XReturnExpression__Group__2() throws RecognitionException;
+     void rule__XReturnExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__0() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__1() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__2() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__3() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException;
+     void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__0() throws RecognitionException;
+     void rule__XCatchClause__Group__0__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__1() throws RecognitionException;
+     void rule__XCatchClause__Group__1__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__2() throws RecognitionException;
+     void rule__XCatchClause__Group__2__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__3() throws RecognitionException;
+     void rule__XCatchClause__Group__3__Impl() throws RecognitionException;
+     void rule__XCatchClause__Group__4() throws RecognitionException;
+     void rule__XCatchClause__Group__4__Impl() throws RecognitionException;
+     void rule__Number__Group_1__0() throws RecognitionException;
+     void rule__Number__Group_1__0__Impl() throws RecognitionException;
+     void rule__Number__Group_1__1() throws RecognitionException;
+     void rule__Number__Group_1__1__Impl() throws RecognitionException;
+     void rule__Number__Group_1_1__0() throws RecognitionException;
+     void rule__Number__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__Number__Group_1_1__1() throws RecognitionException;
+     void rule__Number__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__0() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__1() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException;
+     void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException;
+     void rule__ArrayBrackets__Group__0() throws RecognitionException;
+     void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException;
+     void rule__ArrayBrackets__Group__1() throws RecognitionException;
+     void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__2() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException;
+     void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__JvmUpperBound__Group__0() throws RecognitionException;
+     void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException;
+     void rule__JvmUpperBound__Group__1() throws RecognitionException;
+     void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException;
+     void rule__JvmLowerBound__Group__0() throws RecognitionException;
+     void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException;
+     void rule__JvmLowerBound__Group__1() throws RecognitionException;
+     void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException;
+     void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group__0() throws RecognitionException;
+     void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group__1() throws RecognitionException;
+     void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group__2() throws RecognitionException;
+     void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__0() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__1() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__2() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__2__Impl() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__3() throws RecognitionException;
+     void rule__XImportDeclaration__Group_1_0__3__Impl() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException;
+     void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException;
+     void rule__DatamartProperty__UnorderedGroup_2() throws RecognitionException;
+     void rule__DatamartProperty__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DatamartProperty__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DatamartProperty__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DatamartProperty__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DatamartModel__PackagesAssignment() throws RecognitionException;
+     void rule__DatamartPackage__NameAssignment_2() throws RecognitionException;
+     void rule__DatamartPackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__DatamartPackage__DefinitionsAssignment_3_2() throws RecognitionException;
+     void rule__DatamartDefinition__NameAssignment_1() throws RecognitionException;
+     void rule__DatamartDefinition__DescriptionAssignment_2_0() throws RecognitionException;
+     void rule__DatamartDefinition__DescriptionValueAssignment_2_1() throws RecognitionException;
+     void rule__DatamartDefinition__RolesAssignment_3_2() throws RecognitionException;
+     void rule__DatamartDefinition__SourceAssignment_5() throws RecognitionException;
+     void rule__DatamartRole__AssignedRoleAssignment_1() throws RecognitionException;
+     void rule__DatamartTask__TaskQueryAssignment_1() throws RecognitionException;
+     void rule__DatamartTask__ColumnsAssignment_2_2() throws RecognitionException;
+     void rule__DatamartTask__ConditionsAssignment_3_2() throws RecognitionException;
+     void rule__DatamartColumn__ColumnRefAssignment_1() throws RecognitionException;
+     void rule__DatamartTaskFilter__FilterRefAssignment_1() throws RecognitionException;
+     void rule__DatamartCube__CubeRefAssignment_1() throws RecognitionException;
+     void rule__DatamartCube__NonEmptyAssignment_2() throws RecognitionException;
+     void rule__DatamartCube__AxisslicerAssignment_4() throws RecognitionException;
+     void rule__DatamartReference__RefAssignment_1() throws RecognitionException;
+     void rule__DatamartEntity__EntityRefAssignment_1() throws RecognitionException;
+     void rule__DatamartEntity__TrackingAssignment_2() throws RecognitionException;
+     void rule__DatamartEntity__NavigationsAssignment_4_2() throws RecognitionException;
+     void rule__DatamartEntity__PropertiesAssignment_5_2() throws RecognitionException;
+     void rule__DatamartEntity__ConditionsAssignment_6_2() throws RecognitionException;
+     void rule__DatamartEntity__OrderingAssignment_7_2() throws RecognitionException;
+     void rule__DatamartEntity__FillerMinCountRowsAssignment_8_1() throws RecognitionException;
+     void rule__DatamartEntity__FillerMaxCountRowsAssignment_8_3() throws RecognitionException;
+     void rule__DatamartEntity__FillerDatasAssignment_8_5() throws RecognitionException;
+     void rule__DatamartOwner__JoinRefAssignment_1() throws RecognitionException;
+     void rule__DatamartOwner__DatamartEntityAssignment_3() throws RecognitionException;
+     void rule__DatamartMember__JoinRefAssignment_1() throws RecognitionException;
+     void rule__DatamartMember__DatamartEntityAssignment_3() throws RecognitionException;
+     void rule__DatamartProperty__PropertyRefAssignment_1() throws RecognitionException;
+     void rule__DatamartProperty__AggregatedAssignment_2_0_0() throws RecognitionException;
+     void rule__DatamartProperty__AggregateAssignment_2_0_1() throws RecognitionException;
+     void rule__DatamartProperty__PlacedAssignment_2_1_0() throws RecognitionException;
+     void rule__DatamartProperty__AxisAssignment_2_1_1() throws RecognitionException;
+     void rule__DatamartProperty__ScaledAssignment_2_2_0() throws RecognitionException;
+     void rule__DatamartProperty__ScaleAssignment_2_2_1() throws RecognitionException;
+     void rule__DatamartCondition__ConditionAssignment_1() throws RecognitionException;
+     void rule__DatamartOrder__OrderByAssignment_1() throws RecognitionException;
+     void rule__DatamartOrder__OrderHowAssignment_2() throws RecognitionException;
+     void rule__DatamartDisjunction__RightAssignment_1_1() throws RecognitionException;
+     void rule__DatamartConjunction__RightAssignment_1_1() throws RecognitionException;
+     void rule__DatamartConditionalExpression__OperatorAssignment_1_0_1() throws RecognitionException;
+     void rule__DatamartConditionalExpression__RightAssignment_1_1() throws RecognitionException;
+     void rule__DatamartValue__NumberValueAssignment_0() throws RecognitionException;
+     void rule__DatamartValue__StringValueAssignment_1() throws RecognitionException;
+     void rule__DatamartValue__FilteredAssignment_2_0_0() throws RecognitionException;
+     void rule__DatamartValue__OptionalAssignment_2_0_1() throws RecognitionException;
+     void rule__DatamartValue__SelectedAssignment_2_1() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__NameAssignment_1() throws RecognitionException;
+     void rule__DatamartDefineDerivedMeasure__DerivedElementAssignment_3() throws RecognitionException;
+     void rule__DatamartAddition__RightAssignment_1_1() throws RecognitionException;
+     void rule__DatamartMultiplication__RightAssignment_1_1() throws RecognitionException;
+     void rule__DatamartNumberOrElement__ValueAssignment_0() throws RecognitionException;
+     void rule__DatamartMemberTuple__FunctionAssignment_0_0_0() throws RecognitionException;
+     void rule__DatamartMemberTuple__FunctionAssignment_0_0_1() throws RecognitionException;
+     void rule__DatamartMemberTuple__HierarchyAssignment_1() throws RecognitionException;
+     void rule__DatamartMemberTuple__RightAssignment_2_2() throws RecognitionException;
+     void rule__DatamartFunction__FunctionAssignment() throws RecognitionException;
+     void rule__DatamartParameterFunction__FunctionAssignment_0() throws RecognitionException;
+     void rule__DatamartParameterFunction__ParameterAssignment_2() throws RecognitionException;
+     void rule__DatamartFunctionIntParameter__ValueAssignment() throws RecognitionException;
+     void rule__DatamartSetFunction__SetFunctionAssignment() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__SetFunctionAssignment_0() throws RecognitionException;
+     void rule__DatamartSetParameterFunction__ParameterAssignment_2() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__AggregationAssignment_0() throws RecognitionException;
+     void rule__DatamartSetAggregationFunction__ParameterAssignment_2() throws RecognitionException;
+     void rule__DatamartSetTuple__SetFunctionAssignment_0_0() throws RecognitionException;
+     void rule__DatamartSetTuple__SetFunctionAssignment_0_1() throws RecognitionException;
+     void rule__DatamartSetTuple__RightAssignment_1_2() throws RecognitionException;
+     void rule__DatamartAggregationFunction__AggregationAssignment() throws RecognitionException;
+     void rule__DatamartAggregation__AggregationAssignment_0() throws RecognitionException;
+     void rule__DatamartAggregation__SetAssignment_2_0() throws RecognitionException;
+     void rule__DatamartAggregation__SetAssignment_2_1() throws RecognitionException;
+     void rule__DatamartAggregation__RightAssignment_3_2() throws RecognitionException;
+     void rule__DatamartSetAggregation__AggregationAssignment_0() throws RecognitionException;
+     void rule__DatamartSetAggregation__SetAssignment_2_0() throws RecognitionException;
+     void rule__DatamartSetAggregation__SetAssignment_2_1() throws RecognitionException;
+     void rule__DatamartSetAggregation__RightAssignment_3_2() throws RecognitionException;
+     void rule__DatamartSlicer__ElementAssignment_1() throws RecognitionException;
+     void rule__DatamartAxis__NameAssignment_1() throws RecognitionException;
+     void rule__DatamartAxis__ElementsAssignment_3() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__DerivedRefAssignment_1() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__ScaledAssignment_2_0() throws RecognitionException;
+     void rule__DatamartDerivedMeasure__ScaleAssignment_2_1() throws RecognitionException;
+     void rule__DatamartMeasure__MeasureRefAssignment_1() throws RecognitionException;
+     void rule__DatamartMeasure__ScaledAssignment_2_0() throws RecognitionException;
+     void rule__DatamartMeasure__ScaleAssignment_2_1() throws RecognitionException;
+     void rule__DatamartHierarchy__HierarchyRefAssignment_1() throws RecognitionException;
+     void rule__DatamartHierarchy__DefaultMemberAssignment_2() throws RecognitionException;
+     void rule__DatamartHierarchy__AllMemberAssignment_3() throws RecognitionException;
+     void rule__DatamartHierarchy__AllLevelsAssignment_4() throws RecognitionException;
+     void rule__DatamartHierarchy__LevelRefAssignment_5_1() throws RecognitionException;
+     void rule__DatamartHierarchy__FilteredAssignment_5_2_0() throws RecognitionException;
+     void rule__DatamartHierarchy__SelectedAssignment_5_2_1() throws RecognitionException;
+     void rule__DatamartHierarchy__AllAssignment_6_0() throws RecognitionException;
+     void rule__DatamartHierarchy__ExceptAssignment_6_1_0() throws RecognitionException;
+     void rule__DatamartHierarchy__ExceptRefAssignment_6_1_1() throws RecognitionException;
+     void rule__DatamartHierarchy__OrderedAssignment_6_2_0() throws RecognitionException;
+     void rule__DatamartHierarchy__OrderRefAssignment_6_2_1() throws RecognitionException;
+     void rule__DatamartHierarchy__DescendingAssignment_6_2_2() throws RecognitionException;
+     void rule__DatamartImport__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__PropertyFillerData__PropertyRefAssignment_1() throws RecognitionException;
+     void rule__PropertyFillerData__FillerTypeAssignment_3() throws RecognitionException;
+     void rule__PropertyFillerDateFuture__DateFutureYearsAssignment_1() throws RecognitionException;
+     void rule__PropertyFillerDatePast__DatePastYearsAssignment_1() throws RecognitionException;
+     void rule__PropertyFillerDateRange__DateBeginYearsAssignment_1() throws RecognitionException;
+     void rule__PropertyFillerDateRange__DateEndYearsAssignment_3() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_3() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_1() throws RecognitionException;
+     void rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_1() throws RecognitionException;
+     void rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerTextRandom__ItemsAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerTextParagraphs__CountAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerTextSentences__CountAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerTextWords__CountAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_3() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_1() throws RecognitionException;
+     void rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2() throws RecognitionException;
+     void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException;
+     void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException;
+     void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException;
+     void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException;
+     void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException;
+     void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException;
+     void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException;
+     void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException;
+     void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException;
+     void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException;
+     void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException;
+     void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException;
+     void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException;
+     void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException;
+     void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException;
+     void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException;
+     void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException;
+     void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException;
+     void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException;
+     void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException;
+     void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException;
+     void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException;
+     void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException;
+     void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException;
+     void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException;
+     void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException;
+     void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException;
+     void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException;
+     void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException;
+     void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException;
+     void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException;
+     void rule__XClosure__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException;
+     void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException;
+     void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException;
+     void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException;
+     void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException;
+     void rule__XIfExpression__IfAssignment_3() throws RecognitionException;
+     void rule__XIfExpression__ThenAssignment_5() throws RecognitionException;
+     void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException;
+     void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException;
+     void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException;
+     void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException;
+     void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException;
+     void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException;
+     void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException;
+     void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException;
+     void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException;
+     void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException;
+     void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException;
+     void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException;
+     void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException;
+     void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException;
+     void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException;
+     void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException;
+     void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException;
+     void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException;
+     void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException;
+     void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException;
+     void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException;
+     void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException;
+     void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException;
+     void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException;
+     void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException;
+     void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException;
+     void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException;
+     void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException;
+     void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException;
+     void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException;
+     void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException;
+     void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException;
+     void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException;
+     void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException;
+     void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException;
+     void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException;
+     void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException;
+     void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException;
+     void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException;
+     void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException;
+     void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException;
+     void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException;
+     void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException;
+     void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException;
+     void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException;
+     void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException;
+     void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException;
+     void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException;
+     void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException;
+     void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException;
+     void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException;
+     void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException;
+     void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException;
+     void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException;
+     void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException;
+     void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException;
+     void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException;
+     void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException;
+     void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException;
+     void rule__XImportDeclaration__StaticAssignment_1_0_0() throws RecognitionException;
+     void rule__XImportDeclaration__ExtensionAssignment_1_0_1() throws RecognitionException;
+     void rule__XImportDeclaration__ImportedTypeAssignment_1_0_2() throws RecognitionException;
+     void rule__XImportDeclaration__WildcardAssignment_1_0_3_0() throws RecognitionException;
+     void rule__XImportDeclaration__MemberNameAssignment_1_0_3_1() throws RecognitionException;
+     void rule__XImportDeclaration__ImportedTypeAssignment_1_1() throws RecognitionException;
+     void rule__XImportDeclaration__ImportedNamespaceAssignment_1_2() throws RecognitionException;
+     void synpred53_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred54_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred55_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred80_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred81_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred94_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred102_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred103_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred116_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred120_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred121_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred127_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred237_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred270_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred272_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred273_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred274_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred275_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred276_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred277_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred278_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred279_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred280_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred281_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred283_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred284_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred292_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred299_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred302_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred315_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred316_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred320_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred321_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred322_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred327_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred328_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred329_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred331_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred335_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred337_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred338_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred345_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred346_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred347_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred348_InternalDatamartDSL_fragment() throws RecognitionException;   
+     void synpred349_InternalDatamartDSL_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalDatamartDSLParser1 extends AbstractInternalContentAssistParser implements InternalDatamartDSLParserSignatures {
+
+        InternalDatamartDSLParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalDatamartDSLParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    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'", "'default'", "'columns'", "'rows'", "'pages'", "'sections'", "'chapters'", "'previous'", "'next'", "'first'", "'last'", "'lag'", "'lead'", "'year-to-date'", "'periods'", "'tail'", "'head'", "'topcount'", "'topsummation'", "'toppercentage'", "'bottomcount'", "'bottomsummation'", "'bottompercentage'", "'average'", "'summation'", "'aggregate'", "'deviation'", "'<='", "'like'", "'count'", "'group1'", "'group2'", "'group3'", "'group4'", "'group5'", "'group6'", "'group7'", "'group8'", "'group9'", "'BusinessAdministrator'", "'PotentialOwner'", "'Recipient'", "'TaskInitiator'", "'TaskStakeholder'", "'ExcludedOwner'", "'Name'", "'Priority'", "'Status'", "'Subject'", "'Description'", "'ExpirationTime'", "'CreatedOn'", "'CreatedBy'", "'ActivationTime'", "'ActualOwner'", "'TaskId'", "'ProcessId'", "'ProcessInstanceId'", "'ProcessSessionId'", "'Groups'", "'Users'", "'ascending'", "'descending'", "'package'", "'{'", "'}'", "'datamart'", "'using'", "'for'", "'role'", "'task'", "'conditions'", "'column'", "'filter'", "'cube'", "'join'", "'entity'", "'navigation'", "'properties'", "'ordering'", "'filler rows'", "'to'", "'many to one'", "'one to many'", "'property'", "'condition'", "'order'", "'or'", "'and'", "'('", "')'", "'derive'", "'from'", "'of'", "'over'", "'slicer'", "'axis'", "'derived'", "'measure'", "'hierarchy'", "'level'", "'fill'", "'with'", "'filler-date future'", "'years'", "'filler-date past'", "'filler-date range'", "'up to and including'", "'filler-signed-double range'", "'decimals'", "'round to'", "'filler-signed-double random'", "'filler-signed-integer range'", "'filler-signed-integer random'", "'filler-text random'", "'filler-text paragraps'", "'filler-text sentences'", "'filler-text words'", "'filler-unsigned-double range'", "'filler-unsigned-double random'", "'filler-unsigned-integer range'", "'filler-unsigned-integer random'", "'@'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "';'", "'if'", "'else'", "'switch'", "':'", "'case'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'described by'", "'nonempty values'", "'tracking'", "'on axis'", "'scale'", "'filtered'", "'optional'", "'selected'", "'condensed'", "'exploded'", "'detailed'", "'except'", "'ordered by'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    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__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    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 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__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    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__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    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__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__100=100;
+    public static final int T__102=102;
+    public static final int T__101=101;
+    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__13=13;
+    public static final int T__14=14;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__121=121;
+    public static final int T__124=124;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__117=117;
+    public static final int T__116=116;
+    public static final int T__111=111;
+    public static final int T__110=110;
+    public static final int T__113=113;
+    public static final int T__112=112;
+    public static final int T__108=108;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__103=103;
+    public static final int T__106=106;
+    public static final int T__105=105;
+    public static final int RULE_HEX=6;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    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 T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=5;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+
+    public String[] getTokenNames() { return InternalDatamartDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/antlr/internal/InternalDatamartDSL.g"; }
+
+
+     
+     	protected DatamartDSLGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(DatamartDSLGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred127_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred127_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred292_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred292_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred116_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred116_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred80_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred80_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred102_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred102_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred270_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred270_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred281_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred281_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred345_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred345_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred329_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred329_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred275_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred275_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred94_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred94_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred273_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred273_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred284_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred284_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred276_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred276_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred103_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred103_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred328_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred328_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred278_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred278_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred315_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred315_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred55_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred55_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred120_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred120_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred337_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred337_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred321_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred321_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred348_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred348_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred279_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred279_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred81_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred81_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred302_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred302_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred274_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred274_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred53_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred53_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred335_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred335_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred280_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred280_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred346_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred346_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred237_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred237_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred277_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred277_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred54_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred54_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred331_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred331_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred320_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred320_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred347_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred347_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred349_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred349_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred322_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred322_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred121_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred121_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred299_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred299_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred338_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred338_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred327_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred327_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred272_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred272_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred316_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred316_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred283_InternalDatamartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred283_InternalDatamartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA29 dfa29 = new DFA29(this);
+    protected DFA30 dfa30 = new DFA30(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA38 dfa38 = new DFA38(this);
+    protected DFA46 dfa46 = new DFA46(this);
+    protected DFA49 dfa49 = new DFA49(this);
+    protected DFA50 dfa50 = new DFA50(this);
+    protected DFA53 dfa53 = new DFA53(this);
+    protected DFA58 dfa58 = new DFA58(this);
+    protected DFA61 dfa61 = new DFA61(this);
+    protected DFA70 dfa70 = new DFA70(this);
+    protected DFA163 dfa163 = new DFA163(this);
+    protected DFA169 dfa169 = new DFA169(this);
+    protected DFA176 dfa176 = new DFA176(this);
+    protected DFA177 dfa177 = new DFA177(this);
+    protected DFA185 dfa185 = new DFA185(this);
+    protected DFA195 dfa195 = new DFA195(this);
+    protected DFA208 dfa208 = new DFA208(this);
+    protected DFA209 dfa209 = new DFA209(this);
+    protected DFA213 dfa213 = new DFA213(this);
+    protected DFA214 dfa214 = new DFA214(this);
+    protected DFA215 dfa215 = new DFA215(this);
+    protected DFA220 dfa220 = new DFA220(this);
+    protected DFA228 dfa228 = new DFA228(this);
+    protected DFA231 dfa231 = new DFA231(this);
+    static final String DFA29_eotS =
+        "\43\uffff";
+    static final String DFA29_eofS =
+        "\43\uffff";
+    static final String DFA29_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA29_maxS =
+        "\1\u00d7\1\0\41\uffff";
+    static final String DFA29_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA29_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA29_transitionS = {
+            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\77"+
+            "\uffff\1\2\3\uffff\1\2\24\uffff\1\2\40\uffff\1\2\2\uffff\2\2"+
+            "\3\uffff\1\2\1\uffff\1\2\2\uffff\10\2\1\uffff\1\2\24\uffff\1"+
+            "\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA29_eot = DFA.unpackEncodedString(DFA29_eotS);
+    static final short[] DFA29_eof = DFA.unpackEncodedString(DFA29_eofS);
+    static final char[] DFA29_min = DFA.unpackEncodedStringToUnsignedChars(DFA29_minS);
+    static final char[] DFA29_max = DFA.unpackEncodedStringToUnsignedChars(DFA29_maxS);
+    static final short[] DFA29_accept = DFA.unpackEncodedString(DFA29_acceptS);
+    static final short[] DFA29_special = DFA.unpackEncodedString(DFA29_specialS);
+    static final short[][] DFA29_transition;
+
+    static {
+        int numStates = DFA29_transitionS.length;
+        DFA29_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA29_transition[i] = DFA.unpackEncodedString(DFA29_transitionS[i]);
+        }
+    }
+
+    class DFA29 extends DFA {
+
+        public DFA29(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 29;
+            this.eot = DFA29_eot;
+            this.eof = DFA29_eof;
+            this.min = DFA29_min;
+            this.max = DFA29_max;
+            this.accept = DFA29_accept;
+            this.special = DFA29_special;
+            this.transition = DFA29_transition;
+        }
+        public String getDescription() {
+            return "5242:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA29_1 = input.LA(1);
+
+                         
+                        int index29_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred53_InternalDatamartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index29_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 29, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA30_eotS =
+        "\43\uffff";
+    static final String DFA30_eofS =
+        "\43\uffff";
+    static final String DFA30_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA30_maxS =
+        "\1\u00d7\1\0\41\uffff";
+    static final String DFA30_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA30_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA30_transitionS = {
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\77\uffff"+
+            "\1\2\3\uffff\1\2\24\uffff\1\2\40\uffff\1\2\2\uffff\1\1\1\2\3"+
+            "\uffff\1\2\1\uffff\1\2\2\uffff\10\2\1\uffff\1\2\24\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA30_eot = DFA.unpackEncodedString(DFA30_eotS);
+    static final short[] DFA30_eof = DFA.unpackEncodedString(DFA30_eofS);
+    static final char[] DFA30_min = DFA.unpackEncodedStringToUnsignedChars(DFA30_minS);
+    static final char[] DFA30_max = DFA.unpackEncodedStringToUnsignedChars(DFA30_maxS);
+    static final short[] DFA30_accept = DFA.unpackEncodedString(DFA30_acceptS);
+    static final short[] DFA30_special = DFA.unpackEncodedString(DFA30_specialS);
+    static final short[][] DFA30_transition;
+
+    static {
+        int numStates = DFA30_transitionS.length;
+        DFA30_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA30_transition[i] = DFA.unpackEncodedString(DFA30_transitionS[i]);
+        }
+    }
+
+    class DFA30 extends DFA {
+
+        public DFA30(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 30;
+            this.eot = DFA30_eot;
+            this.eof = DFA30_eof;
+            this.min = DFA30_min;
+            this.max = DFA30_max;
+            this.accept = DFA30_accept;
+            this.special = DFA30_special;
+            this.transition = DFA30_transition;
+        }
+        public String getDescription() {
+            return "5264:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA30_1 = input.LA(1);
+
+                         
+                        int index30_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred54_InternalDatamartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index30_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 30, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA31_eotS =
+        "\43\uffff";
+    static final String DFA31_eofS =
+        "\43\uffff";
+    static final String DFA31_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA31_maxS =
+        "\1\u00d7\1\0\41\uffff";
+    static final String DFA31_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA31_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA31_transitionS = {
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\77\uffff"+
+            "\1\2\3\uffff\1\2\24\uffff\1\2\40\uffff\1\2\2\uffff\1\1\1\2\3"+
+            "\uffff\1\2\1\uffff\1\2\2\uffff\10\2\1\uffff\1\2\24\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA31_eot = DFA.unpackEncodedString(DFA31_eotS);
+    static final short[] DFA31_eof = DFA.unpackEncodedString(DFA31_eofS);
+    static final char[] DFA31_min = DFA.unpackEncodedStringToUnsignedChars(DFA31_minS);
+    static final char[] DFA31_max = DFA.unpackEncodedStringToUnsignedChars(DFA31_maxS);
+    static final short[] DFA31_accept = DFA.unpackEncodedString(DFA31_acceptS);
+    static final short[] DFA31_special = DFA.unpackEncodedString(DFA31_specialS);
+    static final short[][] DFA31_transition;
+
+    static {
+        int numStates = DFA31_transitionS.length;
+        DFA31_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA31_transition[i] = DFA.unpackEncodedString(DFA31_transitionS[i]);
+        }
+    }
+
+    class DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            this.eot = DFA31_eot;
+            this.eof = DFA31_eof;
+            this.min = DFA31_min;
+            this.max = DFA31_max;
+            this.accept = DFA31_accept;
+            this.special = DFA31_special;
+            this.transition = DFA31_transition;
+        }
+        public String getDescription() {
+            return "5286:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred55_InternalDatamartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index31_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 31, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA38_eotS =
+        "\13\uffff";
+    static final String DFA38_eofS =
+        "\13\uffff";
+    static final String DFA38_minS =
+        "\1\32\2\uffff\1\32\7\uffff";
+    static final String DFA38_maxS =
+        "\1\41\2\uffff\1\36\7\uffff";
+    static final String DFA38_acceptS =
+        "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\6\1\3";
+    static final String DFA38_specialS =
+        "\13\uffff}>";
+    static final String[] DFA38_transitionS = {
+            "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10",
+            "",
+            "",
+            "\1\11\3\uffff\1\12",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS);
+    static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS);
+    static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS);
+    static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS);
+    static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS);
+    static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS);
+    static final short[][] DFA38_transition;
+
+    static {
+        int numStates = DFA38_transitionS.length;
+        DFA38_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]);
+        }
+    }
+
+    class DFA38 extends DFA {
+
+        public DFA38(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 38;
+            this.eot = DFA38_eot;
+            this.eof = DFA38_eof;
+            this.min = DFA38_min;
+            this.max = DFA38_max;
+            this.accept = DFA38_accept;
+            this.special = DFA38_special;
+            this.transition = DFA38_transition;
+        }
+        public String getDescription() {
+            return "5518:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA46_eotS =
+        "\12\uffff";
+    static final String DFA46_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA46_minS =
+        "\1\53\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA46_maxS =
+        "\1\u00d4\2\61\1\uffff\5\u00d7\1\uffff";
+    static final String DFA46_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA46_specialS =
+        "\12\uffff}>";
+    static final String[] DFA46_transitionS = {
+            "\1\1\u00a7\uffff\1\2\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\46\3\76\uffff\2\3\2\uffff\1\3\24\uffff\2"+
+            "\3\40\uffff\27\3\17\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\46\3\76\uffff\2\3\2\uffff\1\3\24\uffff\2"+
+            "\3\40\uffff\27\3\17\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\46\3\76\uffff\2\3\2\uffff\1\3\24\uffff\2"+
+            "\3\40\uffff\27\3\17\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\46\3\76\uffff\2\3\2\uffff\1\3\24\uffff\2"+
+            "\3\40\uffff\27\3\17\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\46\3\76\uffff\2\3\2\uffff\1\3\24\uffff\2"+
+            "\3\40\uffff\27\3\17\uffff\2\3\1\uffff\2\3",
+            ""
+    };
+
+    static final short[] DFA46_eot = DFA.unpackEncodedString(DFA46_eotS);
+    static final short[] DFA46_eof = DFA.unpackEncodedString(DFA46_eofS);
+    static final char[] DFA46_min = DFA.unpackEncodedStringToUnsignedChars(DFA46_minS);
+    static final char[] DFA46_max = DFA.unpackEncodedStringToUnsignedChars(DFA46_maxS);
+    static final short[] DFA46_accept = DFA.unpackEncodedString(DFA46_acceptS);
+    static final short[] DFA46_special = DFA.unpackEncodedString(DFA46_specialS);
+    static final short[][] DFA46_transition;
+
+    static {
+        int numStates = DFA46_transitionS.length;
+        DFA46_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA46_transition[i] = DFA.unpackEncodedString(DFA46_transitionS[i]);
+        }
+    }
+
+    class DFA46 extends DFA {
+
+        public DFA46(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 46;
+            this.eot = DFA46_eot;
+            this.eof = DFA46_eof;
+            this.min = DFA46_min;
+            this.max = DFA46_max;
+            this.accept = DFA46_accept;
+            this.special = DFA46_special;
+            this.transition = DFA46_transition;
+        }
+        public String getDescription() {
+            return "5800:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA49_eotS =
+        "\43\uffff";
+    static final String DFA49_eofS =
+        "\43\uffff";
+    static final String DFA49_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA49_maxS =
+        "\1\u00d7\2\0\40\uffff";
+    static final String DFA49_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA49_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA49_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
+            "\uffff\6\5\77\uffff\1\5\3\uffff\1\5\24\uffff\1\2\43\uffff\2"+
+            "\5\3\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\1\5\22\uffff"+
+            "\1\3\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA49_eot = DFA.unpackEncodedString(DFA49_eotS);
+    static final short[] DFA49_eof = DFA.unpackEncodedString(DFA49_eofS);
+    static final char[] DFA49_min = DFA.unpackEncodedStringToUnsignedChars(DFA49_minS);
+    static final char[] DFA49_max = DFA.unpackEncodedStringToUnsignedChars(DFA49_maxS);
+    static final short[] DFA49_accept = DFA.unpackEncodedString(DFA49_acceptS);
+    static final short[] DFA49_special = DFA.unpackEncodedString(DFA49_specialS);
+    static final short[][] DFA49_transition;
+
+    static {
+        int numStates = DFA49_transitionS.length;
+        DFA49_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA49_transition[i] = DFA.unpackEncodedString(DFA49_transitionS[i]);
+        }
+    }
+
+    class DFA49 extends DFA {
+
+        public DFA49(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 49;
+            this.eot = DFA49_eot;
+            this.eof = DFA49_eof;
+            this.min = DFA49_min;
+            this.max = DFA49_max;
+            this.accept = DFA49_accept;
+            this.special = DFA49_special;
+            this.transition = DFA49_transition;
+        }
+        public String getDescription() {
+            return "5876:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA49_1 = input.LA(1);
+
+                         
+                        int index49_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred94_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index49_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA49_2 = input.LA(1);
+
+                         
+                        int index49_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred94_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index49_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 49, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA50_eotS =
+        "\40\uffff";
+    static final String DFA50_eofS =
+        "\40\uffff";
+    static final String DFA50_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA50_maxS =
+        "\1\u00d7\26\uffff\1\0\10\uffff";
+    static final String DFA50_acceptS =
+        "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1"+
+        "\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
+    static final String DFA50_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA50_transitionS = {
+            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\77\uffff\1\2\3\uffff"+
+            "\1\27\24\uffff\1\35\43\uffff\2\14\3\uffff\1\26\1\uffff\1\3\2"+
+            "\uffff\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\24\uffff"+
+            "\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA50_eot = DFA.unpackEncodedString(DFA50_eotS);
+    static final short[] DFA50_eof = DFA.unpackEncodedString(DFA50_eofS);
+    static final char[] DFA50_min = DFA.unpackEncodedStringToUnsignedChars(DFA50_minS);
+    static final char[] DFA50_max = DFA.unpackEncodedStringToUnsignedChars(DFA50_maxS);
+    static final short[] DFA50_accept = DFA.unpackEncodedString(DFA50_acceptS);
+    static final short[] DFA50_special = DFA.unpackEncodedString(DFA50_specialS);
+    static final short[][] DFA50_transition;
+
+    static {
+        int numStates = DFA50_transitionS.length;
+        DFA50_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA50_transition[i] = DFA.unpackEncodedString(DFA50_transitionS[i]);
+        }
+    }
+
+    class DFA50 extends DFA {
+
+        public DFA50(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 50;
+            this.eot = DFA50_eot;
+            this.eof = DFA50_eof;
+            this.min = DFA50_min;
+            this.max = DFA50_max;
+            this.accept = DFA50_accept;
+            this.special = DFA50_special;
+            this.transition = DFA50_transition;
+        }
+        public String getDescription() {
+            return "5898:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA50_23 = input.LA(1);
+
+                         
+                        int index50_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred102_InternalDatamartDSL()) ) {s = 30;}
+
+                        else if ( (synpred103_InternalDatamartDSL()) ) {s = 31;}
+
+                         
+                        input.seek(index50_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 50, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA53_eotS =
+        "\43\uffff";
+    static final String DFA53_eofS =
+        "\43\uffff";
+    static final String DFA53_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA53_maxS =
+        "\1\u00d7\1\0\41\uffff";
+    static final String DFA53_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA53_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA53_transitionS = {
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff"+
+            "\6\2\77\uffff\1\2\3\uffff\1\2\24\uffff\1\1\43\uffff\2\2\3\uffff"+
+            "\1\2\1\uffff\1\2\2\uffff\10\2\1\uffff\1\2\24\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA53_eot = DFA.unpackEncodedString(DFA53_eotS);
+    static final short[] DFA53_eof = DFA.unpackEncodedString(DFA53_eofS);
+    static final char[] DFA53_min = DFA.unpackEncodedStringToUnsignedChars(DFA53_minS);
+    static final char[] DFA53_max = DFA.unpackEncodedStringToUnsignedChars(DFA53_maxS);
+    static final short[] DFA53_accept = DFA.unpackEncodedString(DFA53_acceptS);
+    static final short[] DFA53_special = DFA.unpackEncodedString(DFA53_specialS);
+    static final short[][] DFA53_transition;
+
+    static {
+        int numStates = DFA53_transitionS.length;
+        DFA53_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA53_transition[i] = DFA.unpackEncodedString(DFA53_transitionS[i]);
+        }
+    }
+
+    class DFA53 extends DFA {
+
+        public DFA53(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 53;
+            this.eot = DFA53_eot;
+            this.eof = DFA53_eof;
+            this.min = DFA53_min;
+            this.max = DFA53_max;
+            this.accept = DFA53_accept;
+            this.special = DFA53_special;
+            this.transition = DFA53_transition;
+        }
+        public String getDescription() {
+            return "6072:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA53_1 = input.LA(1);
+
+                         
+                        int index53_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred116_InternalDatamartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index53_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 53, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA58_eotS =
+        "\43\uffff";
+    static final String DFA58_eofS =
+        "\43\uffff";
+    static final String DFA58_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA58_maxS =
+        "\1\u00d7\2\0\40\uffff";
+    static final String DFA58_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA58_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA58_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
+            "\uffff\6\5\77\uffff\1\5\3\uffff\1\5\24\uffff\1\2\43\uffff\2"+
+            "\5\3\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\1\5\22\uffff"+
+            "\1\3\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA58_eot = DFA.unpackEncodedString(DFA58_eotS);
+    static final short[] DFA58_eof = DFA.unpackEncodedString(DFA58_eofS);
+    static final char[] DFA58_min = DFA.unpackEncodedStringToUnsignedChars(DFA58_minS);
+    static final char[] DFA58_max = DFA.unpackEncodedStringToUnsignedChars(DFA58_maxS);
+    static final short[] DFA58_accept = DFA.unpackEncodedString(DFA58_acceptS);
+    static final short[] DFA58_special = DFA.unpackEncodedString(DFA58_specialS);
+    static final short[][] DFA58_transition;
+
+    static {
+        int numStates = DFA58_transitionS.length;
+        DFA58_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA58_transition[i] = DFA.unpackEncodedString(DFA58_transitionS[i]);
+        }
+    }
+
+    class DFA58 extends DFA {
+
+        public DFA58(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 58;
+            this.eot = DFA58_eot;
+            this.eof = DFA58_eof;
+            this.min = DFA58_min;
+            this.max = DFA58_max;
+            this.accept = DFA58_accept;
+            this.special = DFA58_special;
+            this.transition = DFA58_transition;
+        }
+        public String getDescription() {
+            return "6184:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA58_1 = input.LA(1);
+
+                         
+                        int index58_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred121_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index58_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA58_2 = input.LA(1);
+
+                         
+                        int index58_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred121_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index58_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 58, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA61_eotS =
+        "\43\uffff";
+    static final String DFA61_eofS =
+        "\43\uffff";
+    static final String DFA61_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA61_maxS =
+        "\1\u00d7\2\0\40\uffff";
+    static final String DFA61_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA61_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA61_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4"+
+            "\uffff\6\5\77\uffff\1\5\3\uffff\1\5\24\uffff\1\2\43\uffff\2"+
+            "\5\3\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\1\5\22\uffff"+
+            "\1\3\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA61_eot = DFA.unpackEncodedString(DFA61_eotS);
+    static final short[] DFA61_eof = DFA.unpackEncodedString(DFA61_eofS);
+    static final char[] DFA61_min = DFA.unpackEncodedStringToUnsignedChars(DFA61_minS);
+    static final char[] DFA61_max = DFA.unpackEncodedStringToUnsignedChars(DFA61_maxS);
+    static final short[] DFA61_accept = DFA.unpackEncodedString(DFA61_acceptS);
+    static final short[] DFA61_special = DFA.unpackEncodedString(DFA61_specialS);
+    static final short[][] DFA61_transition;
+
+    static {
+        int numStates = DFA61_transitionS.length;
+        DFA61_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA61_transition[i] = DFA.unpackEncodedString(DFA61_transitionS[i]);
+        }
+    }
+
+    class DFA61 extends DFA {
+
+        public DFA61(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 61;
+            this.eot = DFA61_eot;
+            this.eof = DFA61_eof;
+            this.min = DFA61_min;
+            this.max = DFA61_max;
+            this.accept = DFA61_accept;
+            this.special = DFA61_special;
+            this.transition = DFA61_transition;
+        }
+        public String getDescription() {
+            return "6278:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA61_1 = input.LA(1);
+
+                         
+                        int index61_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred127_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index61_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA61_2 = input.LA(1);
+
+                         
+                        int index61_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred127_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index61_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 61, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA70_eotS =
+        "\7\uffff";
+    static final String DFA70_eofS =
+        "\2\uffff\1\4\2\uffff\1\4\1\uffff";
+    static final String DFA70_minS =
+        "\1\4\1\uffff\1\53\1\4\1\uffff\1\53\1\uffff";
+    static final String DFA70_maxS =
+        "\1\56\1\uffff\1\u00b3\1\44\1\uffff\1\u00b3\1\uffff";
+    static final String DFA70_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\uffff\1\3";
+    static final String DFA70_specialS =
+        "\7\uffff}>";
+    static final String[] DFA70_transitionS = {
+            "\1\2\51\uffff\1\1",
+            "",
+            "\1\3\u0087\uffff\1\4",
+            "\1\5\37\uffff\1\6",
+            "",
+            "\1\3\u0087\uffff\1\4",
+            ""
+    };
+
+    static final short[] DFA70_eot = DFA.unpackEncodedString(DFA70_eotS);
+    static final short[] DFA70_eof = DFA.unpackEncodedString(DFA70_eofS);
+    static final char[] DFA70_min = DFA.unpackEncodedStringToUnsignedChars(DFA70_minS);
+    static final char[] DFA70_max = DFA.unpackEncodedStringToUnsignedChars(DFA70_maxS);
+    static final short[] DFA70_accept = DFA.unpackEncodedString(DFA70_acceptS);
+    static final short[] DFA70_special = DFA.unpackEncodedString(DFA70_specialS);
+    static final short[][] DFA70_transition;
+
+    static {
+        int numStates = DFA70_transitionS.length;
+        DFA70_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA70_transition[i] = DFA.unpackEncodedString(DFA70_transitionS[i]);
+        }
+    }
+
+    class DFA70 extends DFA {
+
+        public DFA70(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 70;
+            this.eot = DFA70_eot;
+            this.eof = DFA70_eof;
+            this.min = DFA70_min;
+            this.max = DFA70_max;
+            this.accept = DFA70_accept;
+            this.special = DFA70_special;
+            this.transition = DFA70_transition;
+        }
+        public String getDescription() {
+            return "6478:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
+        }
+    }
+    static final String DFA163_eotS =
+        "\12\uffff";
+    static final String DFA163_eofS =
+        "\1\10\11\uffff";
+    static final String DFA163_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA163_maxS =
+        "\1\u00d7\7\0\2\uffff";
+    static final String DFA163_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA163_specialS =
+        "\1\uffff\1\4\1\3\1\1\1\0\1\5\1\6\1\2\2\uffff}>";
+    static final String[] DFA163_transitionS = {
+            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\30\10\76"+
+            "\uffff\2\10\2\uffff\1\10\24\uffff\2\10\40\uffff\27\10\17\uffff"+
+            "\2\10\1\uffff\2\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA163_eot = DFA.unpackEncodedString(DFA163_eotS);
+    static final short[] DFA163_eof = DFA.unpackEncodedString(DFA163_eofS);
+    static final char[] DFA163_min = DFA.unpackEncodedStringToUnsignedChars(DFA163_minS);
+    static final char[] DFA163_max = DFA.unpackEncodedStringToUnsignedChars(DFA163_maxS);
+    static final short[] DFA163_accept = DFA.unpackEncodedString(DFA163_acceptS);
+    static final short[] DFA163_special = DFA.unpackEncodedString(DFA163_specialS);
+    static final short[][] DFA163_transition;
+
+    static {
+        int numStates = DFA163_transitionS.length;
+        DFA163_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA163_transition[i] = DFA.unpackEncodedString(DFA163_transitionS[i]);
+        }
+    }
+
+    class DFA163 extends DFA {
+
+        public DFA163(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 163;
+            this.eot = DFA163_eot;
+            this.eof = DFA163_eof;
+            this.min = DFA163_min;
+            this.max = DFA163_max;
+            this.accept = DFA163_accept;
+            this.special = DFA163_special;
+            this.transition = DFA163_transition;
+        }
+        public String getDescription() {
+            return "18945:1: ( rule__XAssignment__Group_1_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA163_4 = input.LA(1);
+
+                         
+                        int index163_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA163_3 = input.LA(1);
+
+                         
+                        int index163_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA163_7 = input.LA(1);
+
+                         
+                        int index163_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA163_2 = input.LA(1);
+
+                         
+                        int index163_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA163_1 = input.LA(1);
+
+                         
+                        int index163_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA163_5 = input.LA(1);
+
+                         
+                        int index163_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA163_6 = input.LA(1);
+
+                         
+                        int index163_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred270_InternalDatamartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index163_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 163, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA169_eotS =
+        "\13\uffff";
+    static final String DFA169_eofS =
+        "\1\1\12\uffff";
+    static final String DFA169_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA169_maxS =
+        "\1\u00d7\1\uffff\10\0\1\uffff";
+    static final String DFA169_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA169_specialS =
+        "\2\uffff\1\7\1\4\1\0\1\2\1\5\1\1\1\6\1\3\1\uffff}>";
+    static final String[] DFA169_transitionS = {
+            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\22\1\76"+
+            "\uffff\2\1\2\uffff\1\1\24\uffff\2\1\40\uffff\27\1\17\uffff\2"+
+            "\1\1\uffff\2\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA169_eot = DFA.unpackEncodedString(DFA169_eotS);
+    static final short[] DFA169_eof = DFA.unpackEncodedString(DFA169_eofS);
+    static final char[] DFA169_min = DFA.unpackEncodedStringToUnsignedChars(DFA169_minS);
+    static final char[] DFA169_max = DFA.unpackEncodedStringToUnsignedChars(DFA169_maxS);
+    static final short[] DFA169_accept = DFA.unpackEncodedString(DFA169_acceptS);
+    static final short[] DFA169_special = DFA.unpackEncodedString(DFA169_specialS);
+    static final short[][] DFA169_transition;
+
+    static {
+        int numStates = DFA169_transitionS.length;
+        DFA169_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA169_transition[i] = DFA.unpackEncodedString(DFA169_transitionS[i]);
+        }
+    }
+
+    class DFA169 extends DFA {
+
+        public DFA169(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 169;
+            this.eot = DFA169_eot;
+            this.eof = DFA169_eof;
+            this.min = DFA169_min;
+            this.max = DFA169_max;
+            this.accept = DFA169_accept;
+            this.special = DFA169_special;
+            this.transition = DFA169_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 20437:1: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA169_4 = input.LA(1);
+
+                         
+                        int index169_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA169_7 = input.LA(1);
+
+                         
+                        int index169_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA169_5 = input.LA(1);
+
+                         
+                        int index169_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA169_9 = input.LA(1);
+
+                         
+                        int index169_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA169_3 = input.LA(1);
+
+                         
+                        int index169_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA169_6 = input.LA(1);
+
+                         
+                        int index169_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA169_8 = input.LA(1);
+
+                         
+                        int index169_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA169_2 = input.LA(1);
+
+                         
+                        int index169_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred276_InternalDatamartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index169_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 169, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA176_eotS =
+        "\116\uffff";
+    static final String DFA176_eofS =
+        "\1\2\115\uffff";
+    static final String DFA176_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA176_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA176_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA176_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA176_transitionS = {
+            "\5\2\5\uffff\46\2\76\uffff\2\2\2\uffff\1\2\24\uffff\1\1\1\2"+
+            "\40\uffff\27\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA176_eot = DFA.unpackEncodedString(DFA176_eotS);
+    static final short[] DFA176_eof = DFA.unpackEncodedString(DFA176_eofS);
+    static final char[] DFA176_min = DFA.unpackEncodedStringToUnsignedChars(DFA176_minS);
+    static final char[] DFA176_max = DFA.unpackEncodedStringToUnsignedChars(DFA176_maxS);
+    static final short[] DFA176_accept = DFA.unpackEncodedString(DFA176_acceptS);
+    static final short[] DFA176_special = DFA.unpackEncodedString(DFA176_specialS);
+    static final short[][] DFA176_transition;
+
+    static {
+        int numStates = DFA176_transitionS.length;
+        DFA176_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA176_transition[i] = DFA.unpackEncodedString(DFA176_transitionS[i]);
+        }
+    }
+
+    class DFA176 extends DFA {
+
+        public DFA176(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 176;
+            this.eot = DFA176_eot;
+            this.eof = DFA176_eof;
+            this.min = DFA176_min;
+            this.max = DFA176_max;
+            this.accept = DFA176_accept;
+            this.special = DFA176_special;
+            this.transition = DFA176_transition;
+        }
+        public String getDescription() {
+            return "22264:1: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA176_1 = input.LA(1);
+
+                         
+                        int index176_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred283_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index176_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 176, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA177_eotS =
+        "\116\uffff";
+    static final String DFA177_eofS =
+        "\1\2\115\uffff";
+    static final String DFA177_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA177_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA177_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA177_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA177_transitionS = {
+            "\5\2\5\uffff\46\2\76\uffff\2\2\2\uffff\1\2\24\uffff\2\2\40"+
+            "\uffff\3\2\1\1\23\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA177_eot = DFA.unpackEncodedString(DFA177_eotS);
+    static final short[] DFA177_eof = DFA.unpackEncodedString(DFA177_eofS);
+    static final char[] DFA177_min = DFA.unpackEncodedStringToUnsignedChars(DFA177_minS);
+    static final char[] DFA177_max = DFA.unpackEncodedStringToUnsignedChars(DFA177_maxS);
+    static final short[] DFA177_accept = DFA.unpackEncodedString(DFA177_acceptS);
+    static final short[] DFA177_special = DFA.unpackEncodedString(DFA177_specialS);
+    static final short[][] DFA177_transition;
+
+    static {
+        int numStates = DFA177_transitionS.length;
+        DFA177_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA177_transition[i] = DFA.unpackEncodedString(DFA177_transitionS[i]);
+        }
+    }
+
+    class DFA177 extends DFA {
+
+        public DFA177(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 177;
+            this.eot = DFA177_eot;
+            this.eof = DFA177_eof;
+            this.min = DFA177_min;
+            this.max = DFA177_max;
+            this.accept = DFA177_accept;
+            this.special = DFA177_special;
+            this.transition = DFA177_transition;
+        }
+        public String getDescription() {
+            return "22292:1: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA177_1 = input.LA(1);
+
+                         
+                        int index177_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred284_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index177_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 177, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA185_eotS =
+        "\46\uffff";
+    static final String DFA185_eofS =
+        "\46\uffff";
+    static final String DFA185_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA185_maxS =
+        "\1\u00d7\2\0\43\uffff";
+    static final String DFA185_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA185_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA185_transitionS = {
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3"+
+            "\uffff\7\5\77\uffff\1\5\3\uffff\1\5\24\uffff\1\2\42\uffff\3"+
+            "\5\3\uffff\1\5\1\uffff\1\5\2\uffff\10\5\1\uffff\1\5\22\uffff"+
+            "\1\3\2\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA185_eot = DFA.unpackEncodedString(DFA185_eotS);
+    static final short[] DFA185_eof = DFA.unpackEncodedString(DFA185_eofS);
+    static final char[] DFA185_min = DFA.unpackEncodedStringToUnsignedChars(DFA185_minS);
+    static final char[] DFA185_max = DFA.unpackEncodedStringToUnsignedChars(DFA185_maxS);
+    static final short[] DFA185_accept = DFA.unpackEncodedString(DFA185_acceptS);
+    static final short[] DFA185_special = DFA.unpackEncodedString(DFA185_specialS);
+    static final short[][] DFA185_transition;
+
+    static {
+        int numStates = DFA185_transitionS.length;
+        DFA185_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA185_transition[i] = DFA.unpackEncodedString(DFA185_transitionS[i]);
+        }
+    }
+
+    class DFA185 extends DFA {
+
+        public DFA185(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 185;
+            this.eot = DFA185_eot;
+            this.eof = DFA185_eof;
+            this.min = DFA185_min;
+            this.max = DFA185_max;
+            this.accept = DFA185_accept;
+            this.special = DFA185_special;
+            this.transition = DFA185_transition;
+        }
+        public String getDescription() {
+            return "23433:1: ( rule__XClosure__Group_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA185_1 = input.LA(1);
+
+                         
+                        int index185_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred292_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index185_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA185_2 = input.LA(1);
+
+                         
+                        int index185_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred292_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index185_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 185, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA195_eotS =
+        "\42\uffff";
+    static final String DFA195_eofS =
+        "\42\uffff";
+    static final String DFA195_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA195_maxS =
+        "\1\u00d7\2\0\37\uffff";
+    static final String DFA195_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA195_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA195_transitionS = {
+            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4"+
+            "\uffff\6\4\77\uffff\1\4\3\uffff\1\4\24\uffff\1\2\43\uffff\2"+
+            "\4\3\uffff\1\4\1\uffff\1\4\2\uffff\10\4\1\uffff\1\4\24\uffff"+
+            "\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA195_eot = DFA.unpackEncodedString(DFA195_eotS);
+    static final short[] DFA195_eof = DFA.unpackEncodedString(DFA195_eofS);
+    static final char[] DFA195_min = DFA.unpackEncodedStringToUnsignedChars(DFA195_minS);
+    static final char[] DFA195_max = DFA.unpackEncodedStringToUnsignedChars(DFA195_maxS);
+    static final short[] DFA195_accept = DFA.unpackEncodedString(DFA195_acceptS);
+    static final short[] DFA195_special = DFA.unpackEncodedString(DFA195_specialS);
+    static final short[][] DFA195_transition;
+
+    static {
+        int numStates = DFA195_transitionS.length;
+        DFA195_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA195_transition[i] = DFA.unpackEncodedString(DFA195_transitionS[i]);
+        }
+    }
+
+    class DFA195 extends DFA {
+
+        public DFA195(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 195;
+            this.eot = DFA195_eot;
+            this.eof = DFA195_eof;
+            this.min = DFA195_min;
+            this.max = DFA195_max;
+            this.accept = DFA195_accept;
+            this.special = DFA195_special;
+            this.transition = DFA195_transition;
+        }
+        public String getDescription() {
+            return "25101:1: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA195_1 = input.LA(1);
+
+                         
+                        int index195_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred302_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index195_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA195_2 = input.LA(1);
+
+                         
+                        int index195_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred302_InternalDatamartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index195_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 195, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA208_eotS =
+        "\116\uffff";
+    static final String DFA208_eofS =
+        "\1\2\115\uffff";
+    static final String DFA208_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA208_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA208_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA208_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA208_transitionS = {
+            "\5\2\5\uffff\46\2\76\uffff\2\2\2\uffff\1\2\24\uffff\1\1\1\2"+
+            "\40\uffff\27\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA208_eot = DFA.unpackEncodedString(DFA208_eotS);
+    static final short[] DFA208_eof = DFA.unpackEncodedString(DFA208_eofS);
+    static final char[] DFA208_min = DFA.unpackEncodedStringToUnsignedChars(DFA208_minS);
+    static final char[] DFA208_max = DFA.unpackEncodedStringToUnsignedChars(DFA208_maxS);
+    static final short[] DFA208_accept = DFA.unpackEncodedString(DFA208_acceptS);
+    static final short[] DFA208_special = DFA.unpackEncodedString(DFA208_specialS);
+    static final short[][] DFA208_transition;
+
+    static {
+        int numStates = DFA208_transitionS.length;
+        DFA208_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA208_transition[i] = DFA.unpackEncodedString(DFA208_transitionS[i]);
+        }
+    }
+
+    class DFA208 extends DFA {
+
+        public DFA208(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 208;
+            this.eot = DFA208_eot;
+            this.eof = DFA208_eof;
+            this.min = DFA208_min;
+            this.max = DFA208_max;
+            this.accept = DFA208_accept;
+            this.special = DFA208_special;
+            this.transition = DFA208_transition;
+        }
+        public String getDescription() {
+            return "27589:1: ( rule__XFeatureCall__Group_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA208_1 = input.LA(1);
+
+                         
+                        int index208_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred315_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index208_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 208, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA209_eotS =
+        "\116\uffff";
+    static final String DFA209_eofS =
+        "\1\2\115\uffff";
+    static final String DFA209_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA209_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA209_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA209_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA209_transitionS = {
+            "\5\2\5\uffff\46\2\76\uffff\2\2\2\uffff\1\2\24\uffff\2\2\40"+
+            "\uffff\3\2\1\1\23\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA209_eot = DFA.unpackEncodedString(DFA209_eotS);
+    static final short[] DFA209_eof = DFA.unpackEncodedString(DFA209_eofS);
+    static final char[] DFA209_min = DFA.unpackEncodedStringToUnsignedChars(DFA209_minS);
+    static final char[] DFA209_max = DFA.unpackEncodedStringToUnsignedChars(DFA209_maxS);
+    static final short[] DFA209_accept = DFA.unpackEncodedString(DFA209_acceptS);
+    static final short[] DFA209_special = DFA.unpackEncodedString(DFA209_specialS);
+    static final short[][] DFA209_transition;
+
+    static {
+        int numStates = DFA209_transitionS.length;
+        DFA209_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA209_transition[i] = DFA.unpackEncodedString(DFA209_transitionS[i]);
+        }
+    }
+
+    class DFA209 extends DFA {
+
+        public DFA209(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 209;
+            this.eot = DFA209_eot;
+            this.eof = DFA209_eof;
+            this.min = DFA209_min;
+            this.max = DFA209_max;
+            this.accept = DFA209_accept;
+            this.special = DFA209_special;
+            this.transition = DFA209_transition;
+        }
+        public String getDescription() {
+            return "27617:1: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA209_1 = input.LA(1);
+
+                         
+                        int index209_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred316_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index209_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 209, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA213_eotS =
+        "\116\uffff";
+    static final String DFA213_eofS =
+        "\1\2\115\uffff";
+    static final String DFA213_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA213_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA213_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA213_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA213_transitionS = {
+            "\5\2\5\uffff\15\2\1\1\30\2\76\uffff\2\2\2\uffff\1\2\24\uffff"+
+            "\2\2\40\uffff\27\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA213_eot = DFA.unpackEncodedString(DFA213_eotS);
+    static final short[] DFA213_eof = DFA.unpackEncodedString(DFA213_eofS);
+    static final char[] DFA213_min = DFA.unpackEncodedStringToUnsignedChars(DFA213_minS);
+    static final char[] DFA213_max = DFA.unpackEncodedStringToUnsignedChars(DFA213_maxS);
+    static final short[] DFA213_accept = DFA.unpackEncodedString(DFA213_acceptS);
+    static final short[] DFA213_special = DFA.unpackEncodedString(DFA213_specialS);
+    static final short[][] DFA213_transition;
+
+    static {
+        int numStates = DFA213_transitionS.length;
+        DFA213_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA213_transition[i] = DFA.unpackEncodedString(DFA213_transitionS[i]);
+        }
+    }
+
+    class DFA213 extends DFA {
+
+        public DFA213(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 213;
+            this.eot = DFA213_eot;
+            this.eof = DFA213_eof;
+            this.min = DFA213_min;
+            this.max = DFA213_max;
+            this.accept = DFA213_accept;
+            this.special = DFA213_special;
+            this.transition = DFA213_transition;
+        }
+        public String getDescription() {
+            return "28155:1: ( rule__XConstructorCall__Group_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA213_1 = input.LA(1);
+
+                         
+                        int index213_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred320_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index213_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 213, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA214_eotS =
+        "\116\uffff";
+    static final String DFA214_eofS =
+        "\1\2\115\uffff";
+    static final String DFA214_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA214_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA214_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA214_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA214_transitionS = {
+            "\5\2\5\uffff\46\2\76\uffff\2\2\2\uffff\1\2\24\uffff\1\1\1\2"+
+            "\40\uffff\27\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA214_eot = DFA.unpackEncodedString(DFA214_eotS);
+    static final short[] DFA214_eof = DFA.unpackEncodedString(DFA214_eofS);
+    static final char[] DFA214_min = DFA.unpackEncodedStringToUnsignedChars(DFA214_minS);
+    static final char[] DFA214_max = DFA.unpackEncodedStringToUnsignedChars(DFA214_maxS);
+    static final short[] DFA214_accept = DFA.unpackEncodedString(DFA214_acceptS);
+    static final short[] DFA214_special = DFA.unpackEncodedString(DFA214_specialS);
+    static final short[][] DFA214_transition;
+
+    static {
+        int numStates = DFA214_transitionS.length;
+        DFA214_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA214_transition[i] = DFA.unpackEncodedString(DFA214_transitionS[i]);
+        }
+    }
+
+    class DFA214 extends DFA {
+
+        public DFA214(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 214;
+            this.eot = DFA214_eot;
+            this.eof = DFA214_eof;
+            this.min = DFA214_min;
+            this.max = DFA214_max;
+            this.accept = DFA214_accept;
+            this.special = DFA214_special;
+            this.transition = DFA214_transition;
+        }
+        public String getDescription() {
+            return "28184:1: ( rule__XConstructorCall__Group_4__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA214_1 = input.LA(1);
+
+                         
+                        int index214_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred321_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index214_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 214, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA215_eotS =
+        "\116\uffff";
+    static final String DFA215_eofS =
+        "\1\2\115\uffff";
+    static final String DFA215_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA215_maxS =
+        "\1\u00d7\1\0\114\uffff";
+    static final String DFA215_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA215_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA215_transitionS = {
+            "\5\2\5\uffff\46\2\76\uffff\2\2\2\uffff\1\2\24\uffff\2\2\40"+
+            "\uffff\3\2\1\1\23\2\17\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA215_eot = DFA.unpackEncodedString(DFA215_eotS);
+    static final short[] DFA215_eof = DFA.unpackEncodedString(DFA215_eofS);
+    static final char[] DFA215_min = DFA.unpackEncodedStringToUnsignedChars(DFA215_minS);
+    static final char[] DFA215_max = DFA.unpackEncodedStringToUnsignedChars(DFA215_maxS);
+    static final short[] DFA215_accept = DFA.unpackEncodedString(DFA215_acceptS);
+    static final short[] DFA215_special = DFA.unpackEncodedString(DFA215_specialS);
+    static final short[][] DFA215_transition;
+
+    static {
+        int numStates = DFA215_transitionS.length;
+        DFA215_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA215_transition[i] = DFA.unpackEncodedString(DFA215_transitionS[i]);
+        }
+    }
+
+    class DFA215 extends DFA {
+
+        public DFA215(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 215;
+            this.eot = DFA215_eot;
+            this.eof = DFA215_eof;
+            this.min = DFA215_min;
+            this.max = DFA215_max;
+            this.accept = DFA215_accept;
+            this.special = DFA215_special;
+            this.transition = DFA215_transition;
+        }
+        public String getDescription() {
+            return "28212:1: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA215_1 = input.LA(1);
+
+                         
+                        int index215_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred322_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index215_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 215, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA220_eotS =
+        "\116\uffff";
+    static final String DFA220_eofS =
+        "\1\41\115\uffff";
+    static final String DFA220_minS =
+        "\1\4\40\0\55\uffff";
+    static final String DFA220_maxS =
+        "\1\u00d7\40\0\55\uffff";
+    static final String DFA220_acceptS =
+        "\41\uffff\1\2\53\uffff\1\1";
+    static final String DFA220_specialS =
+        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
+        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+
+        "\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
+    static final String[] DFA220_transitionS = {
+            "\1\1\1\27\1\23\1\24\1\25\5\uffff\15\41\1\15\6\41\1\10\1\7\4"+
+            "\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\1\41\76\uffff\1\12\1"+
+            "\41\2\uffff\1\32\24\uffff\1\40\1\41\40\uffff\2\41\1\17\1\20"+
+            "\3\41\1\31\1\41\1\13\2\41\1\33\1\34\1\11\1\26\1\30\1\35\1\36"+
+            "\1\37\1\41\1\14\1\41\17\uffff\2\41\1\uffff\1\41\1\22",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA220_eot = DFA.unpackEncodedString(DFA220_eotS);
+    static final short[] DFA220_eof = DFA.unpackEncodedString(DFA220_eofS);
+    static final char[] DFA220_min = DFA.unpackEncodedStringToUnsignedChars(DFA220_minS);
+    static final char[] DFA220_max = DFA.unpackEncodedStringToUnsignedChars(DFA220_maxS);
+    static final short[] DFA220_accept = DFA.unpackEncodedString(DFA220_acceptS);
+    static final short[] DFA220_special = DFA.unpackEncodedString(DFA220_specialS);
+    static final short[][] DFA220_transition;
+
+    static {
+        int numStates = DFA220_transitionS.length;
+        DFA220_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA220_transition[i] = DFA.unpackEncodedString(DFA220_transitionS[i]);
+        }
+    }
+
+    class DFA220 extends DFA {
+
+        public DFA220(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 220;
+            this.eot = DFA220_eot;
+            this.eof = DFA220_eof;
+            this.min = DFA220_min;
+            this.max = DFA220_max;
+            this.accept = DFA220_accept;
+            this.special = DFA220_special;
+            this.transition = DFA220_transition;
+        }
+        public String getDescription() {
+            return "29265:1: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA220_1 = input.LA(1);
+
+                         
+                        int index220_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA220_2 = input.LA(1);
+
+                         
+                        int index220_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA220_3 = input.LA(1);
+
+                         
+                        int index220_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA220_4 = input.LA(1);
+
+                         
+                        int index220_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA220_5 = input.LA(1);
+
+                         
+                        int index220_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA220_6 = input.LA(1);
+
+                         
+                        int index220_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA220_7 = input.LA(1);
+
+                         
+                        int index220_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA220_8 = input.LA(1);
+
+                         
+                        int index220_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA220_9 = input.LA(1);
+
+                         
+                        int index220_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA220_10 = input.LA(1);
+
+                         
+                        int index220_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA220_11 = input.LA(1);
+
+                         
+                        int index220_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA220_12 = input.LA(1);
+
+                         
+                        int index220_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA220_13 = input.LA(1);
+
+                         
+                        int index220_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA220_14 = input.LA(1);
+
+                         
+                        int index220_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA220_15 = input.LA(1);
+
+                         
+                        int index220_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA220_16 = input.LA(1);
+
+                         
+                        int index220_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA220_17 = input.LA(1);
+
+                         
+                        int index220_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA220_18 = input.LA(1);
+
+                         
+                        int index220_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA220_19 = input.LA(1);
+
+                         
+                        int index220_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA220_20 = input.LA(1);
+
+                         
+                        int index220_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA220_21 = input.LA(1);
+
+                         
+                        int index220_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA220_22 = input.LA(1);
+
+                         
+                        int index220_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA220_23 = input.LA(1);
+
+                         
+                        int index220_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA220_24 = input.LA(1);
+
+                         
+                        int index220_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA220_25 = input.LA(1);
+
+                         
+                        int index220_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA220_26 = input.LA(1);
+
+                         
+                        int index220_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA220_27 = input.LA(1);
+
+                         
+                        int index220_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA220_28 = input.LA(1);
+
+                         
+                        int index220_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA220_29 = input.LA(1);
+
+                         
+                        int index220_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA220_30 = input.LA(1);
+
+                         
+                        int index220_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA220_31 = input.LA(1);
+
+                         
+                        int index220_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA220_32 = input.LA(1);
+
+                         
+                        int index220_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDatamartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index220_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 220, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA228_eotS =
+        "\117\uffff";
+    static final String DFA228_eofS =
+        "\1\2\116\uffff";
+    static final String DFA228_minS =
+        "\1\4\1\0\115\uffff";
+    static final String DFA228_maxS =
+        "\1\u00d7\1\0\115\uffff";
+    static final String DFA228_acceptS =
+        "\2\uffff\1\2\113\uffff\1\1";
+    static final String DFA228_specialS =
+        "\1\uffff\1\0\115\uffff}>";
+    static final String[] DFA228_transitionS = {
+            "\5\2\5\uffff\15\2\1\1\30\2\76\uffff\2\2\2\uffff\1\2\24\uffff"+
+            "\2\2\40\uffff\27\2\1\uffff\1\2\15\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA228_eot = DFA.unpackEncodedString(DFA228_eotS);
+    static final short[] DFA228_eof = DFA.unpackEncodedString(DFA228_eofS);
+    static final char[] DFA228_min = DFA.unpackEncodedStringToUnsignedChars(DFA228_minS);
+    static final char[] DFA228_max = DFA.unpackEncodedStringToUnsignedChars(DFA228_maxS);
+    static final short[] DFA228_accept = DFA.unpackEncodedString(DFA228_acceptS);
+    static final short[] DFA228_special = DFA.unpackEncodedString(DFA228_specialS);
+    static final short[][] DFA228_transition;
+
+    static {
+        int numStates = DFA228_transitionS.length;
+        DFA228_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA228_transition[i] = DFA.unpackEncodedString(DFA228_transitionS[i]);
+        }
+    }
+
+    class DFA228 extends DFA {
+
+        public DFA228(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 228;
+            this.eot = DFA228_eot;
+            this.eof = DFA228_eof;
+            this.min = DFA228_min;
+            this.max = DFA228_max;
+            this.accept = DFA228_accept;
+            this.special = DFA228_special;
+            this.transition = DFA228_transition;
+        }
+        public String getDescription() {
+            return "30720:1: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA228_1 = input.LA(1);
+
+                         
+                        int index228_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred335_InternalDatamartDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index228_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 228, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA231_eotS =
+        "\117\uffff";
+    static final String DFA231_eofS =
+        "\1\2\116\uffff";
+    static final String DFA231_minS =
+        "\1\4\1\0\115\uffff";
+    static final String DFA231_maxS =
+        "\1\u00d7\1\0\115\uffff";
+    static final String DFA231_acceptS =
+        "\2\uffff\1\2\113\uffff\1\1";
+    static final String DFA231_specialS =
+        "\1\uffff\1\0\115\uffff}>";
+    static final String[] DFA231_transitionS = {
+            "\5\2\5\uffff\15\2\1\1\30\2\76\uffff\2\2\2\uffff\1\2\24\uffff"+
+            "\2\2\40\uffff\27\2\1\uffff\1\2\15\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA231_eot = DFA.unpackEncodedString(DFA231_eotS);
+    static final short[] DFA231_eof = DFA.unpackEncodedString(DFA231_eofS);
+    static final char[] DFA231_min = DFA.unpackEncodedStringToUnsignedChars(DFA231_minS);
+    static final char[] DFA231_max = DFA.unpackEncodedStringToUnsignedChars(DFA231_maxS);
+    static final short[] DFA231_accept = DFA.unpackEncodedString(DFA231_acceptS);
+    static final short[] DFA231_special = DFA.unpackEncodedString(DFA231_specialS);
+    static final short[][] DFA231_transition;
+
+    static {
+        int numStates = DFA231_transitionS.length;
+        DFA231_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA231_transition[i] = DFA.unpackEncodedString(DFA231_transitionS[i]);
+        }
+    }
+
+    class DFA231 extends DFA {
+
+        public DFA231(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 231;
+            this.eot = DFA231_eot;
+            this.eof = DFA231_eof;
+            this.min = DFA231_min;
+            this.max = DFA231_max;
+            this.accept = DFA231_accept;
+            this.special = DFA231_special;
+            this.transition = DFA231_transition;
+        }
+        public String getDescription() {
+            return "31031:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA231_1 = input.LA(1);
+
+                         
+                        int index231_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred338_InternalDatamartDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index231_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 231, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    
+    protected static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleDatamartModel_in_entryRuleDatamartModel67 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartModel74 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartModel__PackagesAssignment_in_ruleDatamartModel100 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_ruleDatamartPackage_in_entryRuleDatamartPackage128 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartPackage135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__0_in_ruleDatamartPackage161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDefinition_in_entryRuleDatamartDefinition188 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartDefinition195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__0_in_ruleDatamartDefinition221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartRole_in_entryRuleDatamartRole248 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartRole255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartRole__Group__0_in_ruleDatamartRole281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSource_in_entryRuleDatamartSource308 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSource315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSource__Alternatives_in_ruleDatamartSource341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartTask_in_entryRuleDatamartTask368 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartTask375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__0_in_ruleDatamartTask401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartColumn_in_entryRuleDatamartColumn428 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartColumn435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartColumn__Group__0_in_ruleDatamartColumn461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartTaskFilter_in_entryRuleDatamartTaskFilter488 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartTaskFilter495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTaskFilter__Group__0_in_ruleDatamartTaskFilter521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCube_in_entryRuleDatamartCube548 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartCube555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__0_in_ruleDatamartCube581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartReference_in_entryRuleDatamartReference608 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartReference615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartReference__Group__0_in_ruleDatamartReference641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartEntity_in_entryRuleDatamartEntity668 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartEntity675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__0_in_ruleDatamartEntity701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartNavigation_in_entryRuleDatamartNavigation728 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartNavigation735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartNavigation__Alternatives_in_ruleDatamartNavigation761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOwner_in_entryRuleDatamartOwner788 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartOwner795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__0_in_ruleDatamartOwner821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMember_in_entryRuleDatamartMember848 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartMember855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__0_in_ruleDatamartMember881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartProperty_in_entryRuleDatamartProperty908 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartProperty915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group__0_in_ruleDatamartProperty941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCondition_in_entryRuleDatamartCondition968 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartCondition975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCondition__Group__0_in_ruleDatamartCondition1001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOrder_in_entryRuleDatamartOrder1028 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartOrder1035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__Group__0_in_ruleDatamartOrder1061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDisjunction_in_entryRuleDatamartDisjunction1088 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartDisjunction1095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group__0_in_ruleDatamartDisjunction1121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartConjunction_in_entryRuleDatamartConjunction1148 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartConjunction1155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group__0_in_ruleDatamartConjunction1181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartConditionalExpression_in_entryRuleDatamartConditionalExpression1208 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartConditionalExpression1215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group__0_in_ruleDatamartConditionalExpression1241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOperand_in_entryRuleDatamartOperand1268 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartOperand1275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Alternatives_in_ruleDatamartOperand1301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartValue_in_entryRuleDatamartValue1328 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartValue1335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__Alternatives_in_ruleDatamartValue1361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCubeElement_in_entryRuleDatamartCubeElement1388 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartCubeElement1395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCubeElement__Alternatives_in_ruleDatamartCubeElement1421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDefineDerivedMeasure_in_entryRuleDatamartDefineDerivedMeasure1448 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartDefineDerivedMeasure1455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__0_in_ruleDatamartDefineDerivedMeasure1481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAddition_in_entryRuleDatamartAddition1508 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartAddition1515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group__0_in_ruleDatamartAddition1541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMultiplication_in_entryRuleDatamartMultiplication1568 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartMultiplication1575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group__0_in_ruleDatamartMultiplication1601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartPrimary_in_entryRuleDatamartPrimary1628 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartPrimary1635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Alternatives_in_ruleDatamartPrimary1661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartNumberOrElement_in_entryRuleDatamartNumberOrElement1688 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartNumberOrElement1695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartNumberOrElement__Alternatives_in_ruleDatamartNumberOrElement1721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMemberTuple_in_entryRuleDatamartMemberTuple1748 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartMemberTuple1755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group__0_in_ruleDatamartMemberTuple1781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartFunction_in_entryRuleDatamartFunction1808 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartFunction1815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartFunction__FunctionAssignment_in_ruleDatamartFunction1841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartParameterFunction_in_entryRuleDatamartParameterFunction1868 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartParameterFunction1875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__0_in_ruleDatamartParameterFunction1901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartFunctionIntParameter_in_entryRuleDatamartFunctionIntParameter1928 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartFunctionIntParameter1935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartFunctionIntParameter__ValueAssignment_in_ruleDatamartFunctionIntParameter1961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetFunction_in_entryRuleDatamartSetFunction1988 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSetFunction1995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetFunction__SetFunctionAssignment_in_ruleDatamartSetFunction2021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetParameterFunction_in_entryRuleDatamartSetParameterFunction2048 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets001 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSetParameterFunction2055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__0_in_ruleDatamartSetParameterFunction2081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetAggregationFunction_in_entryRuleDatamartSetAggregationFunction2108 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSetAggregationFunction2115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__0_in_ruleDatamartSetAggregationFunction2141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetTuple_in_entryRuleDatamartSetTuple2168 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSetTuple2175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group__0_in_ruleDatamartSetTuple2201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAggregationFunction_in_entryRuleDatamartAggregationFunction2228 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartAggregationFunction2235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregationFunction__AggregationAssignment_in_ruleDatamartAggregationFunction2261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAggregation_in_entryRuleDatamartAggregation2288 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartAggregation2295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__0_in_ruleDatamartAggregation2321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetAggregation_in_entryRuleDatamartSetAggregation2348 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSetAggregation2355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__0_in_ruleDatamartSetAggregation2381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSlicer_in_entryRuleDatamartSlicer2408 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartSlicer2415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSlicer__Group__0_in_ruleDatamartSlicer2441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAxis_in_entryRuleDatamartAxis2468 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartAxis2475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__0_in_ruleDatamartAxis2501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartElement_in_entryRuleDatamartElement2528 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartElement2535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartElement__Alternatives_in_ruleDatamartElement2561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDerivedMeasure_in_entryRuleDatamartDerivedMeasure2588 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartDerivedMeasure2595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group__0_in_ruleDatamartDerivedMeasure2621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_entryRuleDatamartMeasure2648 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartMeasure2655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group__0_in_ruleDatamartMeasure2681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartHierarchy_in_entryRuleDatamartHierarchy2708 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartHierarchy2715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__0_in_ruleDatamartHierarchy2741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartImport_in_entryRuleDatamartImport2768 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartImport2775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartImport__Group__0_in_ruleDatamartImport2801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartQualifiedNameWithWildCard_in_entryRuleDatamartQualifiedNameWithWildCard2828 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDatamartQualifiedNameWithWildCard2835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group__0_in_ruleDatamartQualifiedNameWithWildCard2861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName2888 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName2895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName2921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID2948 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidID2955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID2981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING3007 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING3014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING3040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID3066 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTRANSLATABLEID3073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleTRANSLATABLEID3099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerData_in_entryRulePropertyFillerData3125 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerData3132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__0_in_rulePropertyFillerData3158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerType_in_entryRulePropertyFillerType3185 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerType3192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerType__Alternatives_in_rulePropertyFillerType3218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerDateFuture_in_entryRulePropertyFillerDateFuture3245 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerDateFuture3252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__0_in_rulePropertyFillerDateFuture3278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerDatePast_in_entryRulePropertyFillerDatePast3305 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerDatePast3312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__0_in_rulePropertyFillerDatePast3338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerDateRange_in_entryRulePropertyFillerDateRange3365 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerDateRange3372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__0_in_rulePropertyFillerDateRange3398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRange_in_entryRulePropertyFillerSignedDoubleRange3425 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedDoubleRange3432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__0_in_rulePropertyFillerSignedDoubleRange3458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRandom_in_entryRulePropertyFillerSignedDoubleRandom3485 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedDoubleRandom3492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__0_in_rulePropertyFillerSignedDoubleRandom3518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRange_in_entryRulePropertyFillerSignedIntegerRange3545 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedIntegerRange3552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__0_in_rulePropertyFillerSignedIntegerRange3578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRandom_in_entryRulePropertyFillerSignedIntegerRandom3605 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerSignedIntegerRandom3612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__0_in_rulePropertyFillerSignedIntegerRandom3638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextRandom_in_entryRulePropertyFillerTextRandom3665 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextRandom3672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__0_in_rulePropertyFillerTextRandom3698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextParagraphs_in_entryRulePropertyFillerTextParagraphs3725 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextParagraphs3732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__0_in_rulePropertyFillerTextParagraphs3758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextSentences_in_entryRulePropertyFillerTextSentences3785 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextSentences3792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__0_in_rulePropertyFillerTextSentences3818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextWords_in_entryRulePropertyFillerTextWords3845 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerTextWords3852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__0_in_rulePropertyFillerTextWords3878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRange_in_entryRulePropertyFillerUnsignedDoubleRange3905 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedDoubleRange3912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__0_in_rulePropertyFillerUnsignedDoubleRange3938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRandom_in_entryRulePropertyFillerUnsignedDoubleRandom3965 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedDoubleRandom3972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__0_in_rulePropertyFillerUnsignedDoubleRandom3998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRange_in_entryRulePropertyFillerUnsignedIntegerRange4025 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedIntegerRange4032 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets002 {
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__0_in_rulePropertyFillerUnsignedIntegerRange4058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRandom_in_entryRulePropertyFillerUnsignedIntegerRandom4085 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePropertyFillerUnsignedIntegerRandom4092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__0_in_rulePropertyFillerUnsignedIntegerRandom4118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber4145 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSignedNumber4152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__0_in_ruleSignedNumber4178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnsignedNumber_in_entryRuleUnsignedNumber4205 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleUnsignedNumber4212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__0_in_ruleUnsignedNumber4238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSINT_in_entryRuleSINT4265 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSINT4272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SINT__Group__0_in_ruleSINT4298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation4325 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation4332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation4358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair4385 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair4392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair4418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList4445 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList4452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList4478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue4505 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue4512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue4538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression4565 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression4572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression4598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression4625 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression4632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression4658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment4684 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment4691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment4717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4744 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign4751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_ruleOpSingleAssign4778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4806 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign4813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign4839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression4866 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression4873 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression4899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr4926 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr4933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_ruleOpOr4960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression4988 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression4995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression5021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd5048 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd5055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_ruleOpAnd5082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5110 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression5117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression5143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality5170 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality5177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality5203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression5230 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression5237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression5263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare5290 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare5297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare5323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression5350 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression5357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression5383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther5410 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther5417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther5443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression5470 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression5477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression5503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd5530 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd5537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd5563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression5590 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression5597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression5623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti5650 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti5657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti5683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation5710 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation5717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation5743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary5770 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary5777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary5803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression5830 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression5837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression5863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation5890 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation5897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation5923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix5950 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix5957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix5983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall6010 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall6017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall6043 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets003 {
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression6070 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression6077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression6103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral6130 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral6137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral6163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral6190 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral6197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral6223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral6250 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral6257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral6283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral6310 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral6317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral6343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure6370 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure6377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__0_in_ruleXClosure6403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure6430 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure6437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure6463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure6490 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure6497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure6523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression6550 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression6557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression6583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression6610 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression6617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression6643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression6670 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression6677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression6703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart6730 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart6737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart6763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression6790 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression6797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression6823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression6850 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression6857 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression6883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression6910 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression6917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression6943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression6970 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression6977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression7003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression7030 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression7037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression7063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration7090 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration7097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration7123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration7150 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration7157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration7183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter7210 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter7217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter7243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter7270 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter7277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter7303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall7330 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall7337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall7363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID7390 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID7397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID7423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper7450 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper7457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper7483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall7510 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall7517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall7543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral7570 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral7577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral7603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral7630 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral7637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral7663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral7690 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral7697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral7723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral7750 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral7757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral7783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral7810 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral7817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral7843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression7870 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression7877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression7903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression7930 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression7937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression7963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression7990 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression7997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression8023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression8050 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets004 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression8057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression8083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause8110 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause8117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause8143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber8175 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumber8182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_in_ruleNumber8212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference8241 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference8248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference8274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets8301 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets8308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets8334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef8361 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef8368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef8394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference8421 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference8428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference8454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference8481 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference8488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference8514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference8541 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference8548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference8574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound8601 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound8608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound8634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded8661 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded8668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded8694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound8721 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound8728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound8754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded8781 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded8788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded8814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard8843 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard8850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard8876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration8905 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration8912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration8938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport8965 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport8972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport9000 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport9012 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__AxisEnum__Alternatives_in_ruleAxisEnum9052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FunctionEnum__Alternatives_in_ruleFunctionEnum9088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ParameterFunctionEnum__Alternatives_in_ruleParameterFunctionEnum9124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SetFunctionEnum__Alternatives_in_ruleSetFunctionEnum9160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SetParameterFunctionEnum__Alternatives_in_ruleSetParameterFunctionEnum9196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SetAggregationEnum__Alternatives_in_ruleSetAggregationEnum9232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AggregationEnum__Alternatives_in_ruleAggregationEnum9268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OperatorEnum__Alternatives_in_ruleOperatorEnum9304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SqlAggregationEnum__Alternatives_in_ruleSqlAggregationEnum9340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValueScaleEnum__Alternatives_in_ruleValueScaleEnum9376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TaskQueryTopicEnum__Alternatives_in_ruleTaskQueryTopicEnum9412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TaskQueryColumnEnum__Alternatives_in_ruleTaskQueryColumnEnum9448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TaskFilterEnum__Alternatives_in_ruleTaskFilterEnum9484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OrderEnum__Alternatives_in_ruleOrderEnum9520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCube_in_rule__DatamartSource__Alternatives9555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartEntity_in_rule__DatamartSource__Alternatives9572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartTask_in_rule__DatamartSource__Alternatives9589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOwner_in_rule__DatamartNavigation__Alternatives9621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMember_in_rule__DatamartNavigation__Alternatives9638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartValue_in_rule__DatamartOperand__Alternatives9670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Group_1__0_in_rule__DatamartOperand__Alternatives9687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__NumberValueAssignment_0_in_rule__DatamartValue__Alternatives9720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__StringValueAssignment_1_in_rule__DatamartValue__Alternatives9738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__Alternatives_2_in_rule__DatamartValue__Alternatives9756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartProperty_in_rule__DatamartValue__Alternatives9774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartTaskFilter_in_rule__DatamartValue__Alternatives9791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartColumn_in_rule__DatamartValue__Alternatives9808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__Group_2_0__0_in_rule__DatamartValue__Alternatives_29840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__SelectedAssignment_2_1_in_rule__DatamartValue__Alternatives_29858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAxis_in_rule__DatamartCubeElement__Alternatives9891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSlicer_in_rule__DatamartCubeElement__Alternatives9908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDefineDerivedMeasure_in_rule__DatamartCubeElement__Alternatives9925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_0__0_in_rule__DatamartAddition__Alternatives_1_09957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_1__0_in_rule__DatamartAddition__Alternatives_1_09975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_0__0_in_rule__DatamartMultiplication__Alternatives_1_010008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_1__0_in_rule__DatamartMultiplication__Alternatives_1_010026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartNumberOrElement_in_rule__DatamartPrimary__Alternatives10059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Group_1__0_in_rule__DatamartPrimary__Alternatives10076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartNumberOrElement__ValueAssignment_0_in_rule__DatamartNumberOrElement__Alternatives10109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_rule__DatamartNumberOrElement__Alternatives10127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDerivedMeasure_in_rule__DatamartNumberOrElement__Alternatives10144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMemberTuple_in_rule__DatamartNumberOrElement__Alternatives10161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAggregation_in_rule__DatamartNumberOrElement__Alternatives10178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__FunctionAssignment_0_0_0_in_rule__DatamartMemberTuple__Alternatives_0_010210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__FunctionAssignment_0_0_1_in_rule__DatamartMemberTuple__Alternatives_0_010228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__SetFunctionAssignment_0_0_in_rule__DatamartSetTuple__Alternatives_010261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__SetFunctionAssignment_0_1_in_rule__DatamartSetTuple__Alternatives_010279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__SetAssignment_2_0_in_rule__DatamartAggregation__Alternatives_210312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__SetAssignment_2_1_in_rule__DatamartAggregation__Alternatives_210330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__SetAssignment_2_0_in_rule__DatamartSetAggregation__Alternatives_210363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__SetAssignment_2_1_in_rule__DatamartSetAggregation__Alternatives_210381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartHierarchy_in_rule__DatamartElement__Alternatives10414 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets005 {
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_rule__DatamartElement__Alternatives10431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDerivedMeasure_in_rule__DatamartElement__Alternatives10448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetAggregation_in_rule__DatamartElement__Alternatives10465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__FilteredAssignment_5_2_0_in_rule__DatamartHierarchy__Alternatives_5_210497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__SelectedAssignment_5_2_1_in_rule__DatamartHierarchy__Alternatives_5_210515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_rule__DatamartHierarchy__OrderRefAlternatives_6_2_1_010548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDerivedMeasure_in_rule__DatamartHierarchy__OrderRefAlternatives_6_2_1_010565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerDateFuture_in_rule__PropertyFillerType__Alternatives10597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerDatePast_in_rule__PropertyFillerType__Alternatives10614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerDateRange_in_rule__PropertyFillerType__Alternatives10631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRange_in_rule__PropertyFillerType__Alternatives10648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedDoubleRandom_in_rule__PropertyFillerType__Alternatives10665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRange_in_rule__PropertyFillerType__Alternatives10682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerSignedIntegerRandom_in_rule__PropertyFillerType__Alternatives10699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextRandom_in_rule__PropertyFillerType__Alternatives10716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextParagraphs_in_rule__PropertyFillerType__Alternatives10733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextSentences_in_rule__PropertyFillerType__Alternatives10750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerTextWords_in_rule__PropertyFillerType__Alternatives10767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRange_in_rule__PropertyFillerType__Alternatives10784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedDoubleRandom_in_rule__PropertyFillerType__Alternatives10801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRange_in_rule__PropertyFillerType__Alternatives10818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerUnsignedIntegerRandom_in_rule__PropertyFillerType__Alternatives10835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_0_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_010867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_1_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_010885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_0_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_210918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_1_in_rule__PropertyFillerSignedDoubleRange__Alternatives_1_210936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_0_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_010969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_1_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_010987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_0_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_211020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_1_in_rule__PropertyFillerSignedIntegerRange__Alternatives_2_211038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__BeginRangeAssignment_1_0_0_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_011071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__BeginRangeRefAssignment_1_0_1_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_011089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__EndRangeAssignment_1_2_0_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_211122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__EndRangeRefAssignment_1_2_1_in_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_211140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__BeginRangeAssignment_2_0_0_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_011173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__BeginRangeRefAssignment_2_0_1_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_011191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__EndRangeAssignment_2_2_0_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_211224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__EndRangeRefAssignment_2_2_1_in_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_211242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_111275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_111293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives11326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives11344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives11377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives11395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives11427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives11444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives11476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives11494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__OpMultiAssign__Alternatives11528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__OpMultiAssign__Alternatives11548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__OpMultiAssign__Alternatives11568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__OpMultiAssign__Alternatives11588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__OpMultiAssign__Alternatives11608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives11627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives11645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__OpEquality__Alternatives11679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rule__OpEquality__Alternatives11699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__OpEquality__Alternatives11719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__OpEquality__Alternatives11739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_111773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_111791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__OpCompare__Alternatives11825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives11844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpCompare__Alternatives11863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpCompare__Alternatives11883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__OpOther__Alternatives11918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__OpOther__Alternatives11938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives11957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__OpOther__Alternatives11976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpOther__Alternatives11996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0_in_rule__OpOther__Alternatives12015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0_in_rule__OpOther__Alternatives12033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpOther__Alternatives12052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__OpOther__Alternatives12072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0_in_rule__OpOther__Alternatives_5_112106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Alternatives_5_112125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0_in_rule__OpOther__Alternatives_6_112159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Alternatives_6_112178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpOther__Alternatives_6_112198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpAdd__Alternatives12233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__OpAdd__Alternatives12253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__OpMulti__Alternatives12288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__OpMulti__Alternatives12308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__OpMulti__Alternatives12328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__OpMulti__Alternatives12348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0_in_rule__XUnaryOperation__Alternatives12382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_rule__XUnaryOperation__Alternatives12400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__OpUnary__Alternatives12433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__OpUnary__Alternatives12453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpUnary__Alternatives12473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__OpPostfix__Alternatives12508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpPostfix__Alternatives12528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0_in_rule__XMemberFeatureCall__Alternatives_112562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0_in_rule__XMemberFeatureCall__Alternatives_112580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_112614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_112633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_112667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_112686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_112704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_112737 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets006 {
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_112755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_rule__XPrimaryExpression__Alternatives12788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__XPrimaryExpression__Alternatives12805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_rule__XPrimaryExpression__Alternatives12822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_rule__XPrimaryExpression__Alternatives12840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_rule__XPrimaryExpression__Alternatives12858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_rule__XPrimaryExpression__Alternatives12875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_rule__XPrimaryExpression__Alternatives12892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_rule__XPrimaryExpression__Alternatives12910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_rule__XPrimaryExpression__Alternatives12928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_rule__XPrimaryExpression__Alternatives12945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_rule__XPrimaryExpression__Alternatives12962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_rule__XPrimaryExpression__Alternatives12979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_rule__XPrimaryExpression__Alternatives12996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_rule__XPrimaryExpression__Alternatives13013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_rule__XPrimaryExpression__Alternatives13030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_rule__XLiteral__Alternatives13062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_rule__XLiteral__Alternatives13080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_rule__XLiteral__Alternatives13098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_rule__XLiteral__Alternatives13115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_rule__XLiteral__Alternatives13132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_rule__XLiteral__Alternatives13149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_rule__XLiteral__Alternatives13166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_rule__XCollectionLiteral__Alternatives13198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_rule__XCollectionLiteral__Alternatives13215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0_in_rule__XSwitchExpression__Alternatives_213247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0_in_rule__XSwitchExpression__Alternatives_213265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0_in_rule__XCasePart__Alternatives_313298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__FallThroughAssignment_3_1_in_rule__XCasePart__Alternatives_313316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rule__XExpressionOrVarDeclaration__Alternatives13349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XExpressionOrVarDeclaration__Alternatives13366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__WriteableAssignment_1_0_in_rule__XVariableDeclaration__Alternatives_113398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__XVariableDeclaration__Alternatives_113417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0_in_rule__XVariableDeclaration__Alternatives_213451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_1_in_rule__XVariableDeclaration__Alternatives_213469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0_in_rule__XFeatureCall__Alternatives_3_113502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0_in_rule__XFeatureCall__Alternatives_3_113520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__FeatureCallID__Alternatives13553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__FeatureCallID__Alternatives13571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__FeatureCallID__Alternatives13591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__FeatureCallID__Alternatives13611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__FeatureCallID__Alternatives13631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__IdOrSuper__Alternatives13665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__IdOrSuper__Alternatives13683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_0_in_rule__XConstructorCall__Alternatives_4_113717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0_in_rule__XConstructorCall__Alternatives_4_113735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__XBooleanLiteral__Alternatives_113769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__IsTrueAssignment_1_1_in_rule__XBooleanLiteral__Alternatives_113788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0_in_rule__XTryCatchFinallyExpression__Alternatives_313821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0_in_rule__XTryCatchFinallyExpression__Alternatives_313839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_HEX_in_rule__Number__Alternatives13872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__0_in_rule__Number__Alternatives13889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_013922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_013939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_1_113971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_1_113988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0_in_rule__JvmTypeReference__Alternatives14020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_rule__JvmTypeReference__Alternatives14038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__JvmArgumentTypeReference__Alternatives14070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_rule__JvmArgumentTypeReference__Alternatives14087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0_in_rule__JvmWildcardTypeReference__Alternatives_214119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0_in_rule__JvmWildcardTypeReference__Alternatives_214137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0_in_rule__XImportDeclaration__Alternatives_114170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_1_in_rule__XImportDeclaration__Alternatives_114188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedNamespaceAssignment_1_2_in_rule__XImportDeclaration__Alternatives_114206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__WildcardAssignment_1_0_3_0_in_rule__XImportDeclaration__Alternatives_1_0_314239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__MemberNameAssignment_1_0_3_1_in_rule__XImportDeclaration__Alternatives_1_0_314257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__AxisEnum__Alternatives14291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__AxisEnum__Alternatives14312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__AxisEnum__Alternatives14333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__AxisEnum__Alternatives14354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__AxisEnum__Alternatives14375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__AxisEnum__Alternatives14396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__FunctionEnum__Alternatives14432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__FunctionEnum__Alternatives14453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__FunctionEnum__Alternatives14474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__FunctionEnum__Alternatives14495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__ParameterFunctionEnum__Alternatives14531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__ParameterFunctionEnum__Alternatives14552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__SetFunctionEnum__Alternatives14588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__SetFunctionEnum__Alternatives14609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__SetParameterFunctionEnum__Alternatives14645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_rule__SetParameterFunctionEnum__Alternatives14666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__SetAggregationEnum__Alternatives14702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_rule__SetAggregationEnum__Alternatives14723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_rule__SetAggregationEnum__Alternatives14744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__SetAggregationEnum__Alternatives14765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__SetAggregationEnum__Alternatives14786 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__SetAggregationEnum__Alternatives14807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__AggregationEnum__Alternatives14843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__AggregationEnum__Alternatives14864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__AggregationEnum__Alternatives14885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__AggregationEnum__Alternatives14906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OperatorEnum__Alternatives14942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OperatorEnum__Alternatives14963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OperatorEnum__Alternatives14984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__OperatorEnum__Alternatives15005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__OperatorEnum__Alternatives15026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__OperatorEnum__Alternatives15047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__SqlAggregationEnum__Alternatives15083 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets007 {
+        public static final BitSet FOLLOW_74_in_rule__SqlAggregationEnum__Alternatives15104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__SqlAggregationEnum__Alternatives15125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__ValueScaleEnum__Alternatives15161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__ValueScaleEnum__Alternatives15182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__ValueScaleEnum__Alternatives15203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__ValueScaleEnum__Alternatives15224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__ValueScaleEnum__Alternatives15245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__ValueScaleEnum__Alternatives15266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__ValueScaleEnum__Alternatives15287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__ValueScaleEnum__Alternatives15308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__ValueScaleEnum__Alternatives15329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__TaskQueryTopicEnum__Alternatives15365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__TaskQueryTopicEnum__Alternatives15386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__TaskQueryTopicEnum__Alternatives15407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__TaskQueryTopicEnum__Alternatives15428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__TaskQueryTopicEnum__Alternatives15449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__TaskQueryTopicEnum__Alternatives15470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__TaskQueryColumnEnum__Alternatives15506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__TaskQueryColumnEnum__Alternatives15527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__TaskQueryColumnEnum__Alternatives15548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__TaskQueryColumnEnum__Alternatives15569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__TaskQueryColumnEnum__Alternatives15590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__TaskQueryColumnEnum__Alternatives15611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__TaskQueryColumnEnum__Alternatives15632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__TaskQueryColumnEnum__Alternatives15653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__TaskQueryColumnEnum__Alternatives15674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_rule__TaskQueryColumnEnum__Alternatives15695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_rule__TaskQueryColumnEnum__Alternatives15716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__TaskQueryColumnEnum__Alternatives15737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rule__TaskQueryColumnEnum__Alternatives15758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_rule__TaskQueryColumnEnum__Alternatives15779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_rule__TaskFilterEnum__Alternatives15815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__TaskFilterEnum__Alternatives15836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_rule__OrderEnum__Alternatives15872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__OrderEnum__Alternatives15893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__0__Impl_in_rule__DatamartPackage__Group__015926 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__1_in_rule__DatamartPackage__Group__015929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__1__Impl_in_rule__DatamartPackage__Group__115987 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__2_in_rule__DatamartPackage__Group__115990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__DatamartPackage__Group__1__Impl16018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__2__Impl_in_rule__DatamartPackage__Group__216049 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__3_in_rule__DatamartPackage__Group__216052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__NameAssignment_2_in_rule__DatamartPackage__Group__2__Impl16079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group__3__Impl_in_rule__DatamartPackage__Group__316109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__0_in_rule__DatamartPackage__Group__3__Impl16136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__0__Impl_in_rule__DatamartPackage__Group_3__016175 = new BitSet(new long[]{0x0000800000000000L,0x0018000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__1_in_rule__DatamartPackage__Group_3__016178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartPackage__Group_3__0__Impl16206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__1__Impl_in_rule__DatamartPackage__Group_3__116237 = new BitSet(new long[]{0x0000800000000000L,0x0018000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__2_in_rule__DatamartPackage__Group_3__116240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__ImportsAssignment_3_1_in_rule__DatamartPackage__Group_3__1__Impl16267 = new BitSet(new long[]{0x0000800000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__2__Impl_in_rule__DatamartPackage__Group_3__216298 = new BitSet(new long[]{0x0000800000000000L,0x0018000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__3_in_rule__DatamartPackage__Group_3__216301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__DefinitionsAssignment_3_2_in_rule__DatamartPackage__Group_3__2__Impl16328 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartPackage__Group_3__3__Impl_in_rule__DatamartPackage__Group_3__316359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartPackage__Group_3__3__Impl16387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__0__Impl_in_rule__DatamartDefinition__Group__016426 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__1_in_rule__DatamartDefinition__Group__016429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_rule__DatamartDefinition__Group__0__Impl16457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__1__Impl_in_rule__DatamartDefinition__Group__116488 = new BitSet(new long[]{0x0000000000000000L,0x0060000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__2_in_rule__DatamartDefinition__Group__116491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__NameAssignment_1_in_rule__DatamartDefinition__Group__1__Impl16518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__2__Impl_in_rule__DatamartDefinition__Group__216548 = new BitSet(new long[]{0x0000000000000000L,0x0060000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__3_in_rule__DatamartDefinition__Group__216551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_2__0_in_rule__DatamartDefinition__Group__2__Impl16578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__3__Impl_in_rule__DatamartDefinition__Group__316609 = new BitSet(new long[]{0x0000000000000000L,0x0060000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__4_in_rule__DatamartDefinition__Group__316612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__0_in_rule__DatamartDefinition__Group__3__Impl16639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__4__Impl_in_rule__DatamartDefinition__Group__416670 = new BitSet(new long[]{0x0000000000000000L,0x5100000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__5_in_rule__DatamartDefinition__Group__416673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__DatamartDefinition__Group__4__Impl16701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group__5__Impl_in_rule__DatamartDefinition__Group__516732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__SourceAssignment_5_in_rule__DatamartDefinition__Group__5__Impl16759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_2__0__Impl_in_rule__DatamartDefinition__Group_2__016801 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_2__1_in_rule__DatamartDefinition__Group_2__016804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__DescriptionAssignment_2_0_in_rule__DatamartDefinition__Group_2__0__Impl16831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_2__1__Impl_in_rule__DatamartDefinition__Group_2__116861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__DescriptionValueAssignment_2_1_in_rule__DatamartDefinition__Group_2__1__Impl16888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__0__Impl_in_rule__DatamartDefinition__Group_3__016922 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__1_in_rule__DatamartDefinition__Group_3__016925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__DatamartDefinition__Group_3__0__Impl16953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__1__Impl_in_rule__DatamartDefinition__Group_3__116984 = new BitSet(new long[]{0x0000000000000000L,0x0088000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__2_in_rule__DatamartDefinition__Group_3__116987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartDefinition__Group_3__1__Impl17015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__2__Impl_in_rule__DatamartDefinition__Group_3__217046 = new BitSet(new long[]{0x0000000000000000L,0x0088000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__3_in_rule__DatamartDefinition__Group_3__217049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__RolesAssignment_3_2_in_rule__DatamartDefinition__Group_3__2__Impl17076 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartDefinition__Group_3__3__Impl_in_rule__DatamartDefinition__Group_3__317107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartDefinition__Group_3__3__Impl17135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartRole__Group__0__Impl_in_rule__DatamartRole__Group__017174 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartRole__Group__1_in_rule__DatamartRole__Group__017177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_rule__DatamartRole__Group__0__Impl17205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartRole__Group__1__Impl_in_rule__DatamartRole__Group__117236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartRole__AssignedRoleAssignment_1_in_rule__DatamartRole__Group__1__Impl17263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__0__Impl_in_rule__DatamartTask__Group__017297 = new BitSet(new long[]{0x0000000000000000L,0x000000007E000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__1_in_rule__DatamartTask__Group__017300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__DatamartTask__Group__0__Impl17328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__1__Impl_in_rule__DatamartTask__Group__117359 = new BitSet(new long[]{0x0010000000000000L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__2_in_rule__DatamartTask__Group__117362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__TaskQueryAssignment_1_in_rule__DatamartTask__Group__1__Impl17389 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets008 {
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__2__Impl_in_rule__DatamartTask__Group__217419 = new BitSet(new long[]{0x0010000000000000L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__3_in_rule__DatamartTask__Group__217422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__0_in_rule__DatamartTask__Group__2__Impl17449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group__3__Impl_in_rule__DatamartTask__Group__317480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__0_in_rule__DatamartTask__Group__3__Impl17507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__0__Impl_in_rule__DatamartTask__Group_2__017546 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__1_in_rule__DatamartTask__Group_2__017549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__DatamartTask__Group_2__0__Impl17577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__1__Impl_in_rule__DatamartTask__Group_2__117608 = new BitSet(new long[]{0x0000000000000000L,0x0408000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__2_in_rule__DatamartTask__Group_2__117611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartTask__Group_2__1__Impl17639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__2__Impl_in_rule__DatamartTask__Group_2__217670 = new BitSet(new long[]{0x0000000000000000L,0x0408000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__3_in_rule__DatamartTask__Group_2__217673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__ColumnsAssignment_2_2_in_rule__DatamartTask__Group_2__2__Impl17700 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_2__3__Impl_in_rule__DatamartTask__Group_2__317731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartTask__Group_2__3__Impl17759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__0__Impl_in_rule__DatamartTask__Group_3__017798 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__1_in_rule__DatamartTask__Group_3__017801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__DatamartTask__Group_3__0__Impl17829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__1__Impl_in_rule__DatamartTask__Group_3__117860 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__2_in_rule__DatamartTask__Group_3__117863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartTask__Group_3__1__Impl17891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__2__Impl_in_rule__DatamartTask__Group_3__217922 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__3_in_rule__DatamartTask__Group_3__217925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTask__ConditionsAssignment_3_2_in_rule__DatamartTask__Group_3__2__Impl17952 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartTask__Group_3__3__Impl_in_rule__DatamartTask__Group_3__317983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartTask__Group_3__3__Impl18011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartColumn__Group__0__Impl_in_rule__DatamartColumn__Group__018050 = new BitSet(new long[]{0x0000000000000000L,0x00001FFF80000000L});
+        public static final BitSet FOLLOW_rule__DatamartColumn__Group__1_in_rule__DatamartColumn__Group__018053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__DatamartColumn__Group__0__Impl18081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartColumn__Group__1__Impl_in_rule__DatamartColumn__Group__118112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartColumn__ColumnRefAssignment_1_in_rule__DatamartColumn__Group__1__Impl18139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTaskFilter__Group__0__Impl_in_rule__DatamartTaskFilter__Group__018173 = new BitSet(new long[]{0x0000000000000000L,0x0000600000000000L});
+        public static final BitSet FOLLOW_rule__DatamartTaskFilter__Group__1_in_rule__DatamartTaskFilter__Group__018176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__DatamartTaskFilter__Group__0__Impl18204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTaskFilter__Group__1__Impl_in_rule__DatamartTaskFilter__Group__118235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartTaskFilter__FilterRefAssignment_1_in_rule__DatamartTaskFilter__Group__1__Impl18262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__0__Impl_in_rule__DatamartCube__Group__018296 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__1_in_rule__DatamartCube__Group__018299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__DatamartCube__Group__0__Impl18327 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__1__Impl_in_rule__DatamartCube__Group__118358 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__2_in_rule__DatamartCube__Group__118361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__CubeRefAssignment_1_in_rule__DatamartCube__Group__1__Impl18388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__2__Impl_in_rule__DatamartCube__Group__218418 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__3_in_rule__DatamartCube__Group__218421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__NonEmptyAssignment_2_in_rule__DatamartCube__Group__2__Impl18448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__3__Impl_in_rule__DatamartCube__Group__318479 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000062000L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__4_in_rule__DatamartCube__Group__318482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartCube__Group__3__Impl18510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__4__Impl_in_rule__DatamartCube__Group__418541 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000062000L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__5_in_rule__DatamartCube__Group__418544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCube__AxisslicerAssignment_4_in_rule__DatamartCube__Group__4__Impl18571 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000062000L});
+        public static final BitSet FOLLOW_rule__DatamartCube__Group__5__Impl_in_rule__DatamartCube__Group__518602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartCube__Group__5__Impl18630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartReference__Group__0__Impl_in_rule__DatamartReference__Group__018673 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartReference__Group__1_in_rule__DatamartReference__Group__018676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__DatamartReference__Group__0__Impl18704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartReference__Group__1__Impl_in_rule__DatamartReference__Group__118735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartReference__RefAssignment_1_in_rule__DatamartReference__Group__1__Impl18762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__0__Impl_in_rule__DatamartEntity__Group__018796 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__1_in_rule__DatamartEntity__Group__018799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_126_in_rule__DatamartEntity__Group__0__Impl18827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__1__Impl_in_rule__DatamartEntity__Group__118858 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__2_in_rule__DatamartEntity__Group__118861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__EntityRefAssignment_1_in_rule__DatamartEntity__Group__1__Impl18888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__2__Impl_in_rule__DatamartEntity__Group__218918 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__3_in_rule__DatamartEntity__Group__218921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__TrackingAssignment_2_in_rule__DatamartEntity__Group__2__Impl18948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__3__Impl_in_rule__DatamartEntity__Group__318979 = new BitSet(new long[]{0x0000000000000000L,0x8208000000000000L,0x0000000000000007L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__4_in_rule__DatamartEntity__Group__318982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartEntity__Group__3__Impl19010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__4__Impl_in_rule__DatamartEntity__Group__419041 = new BitSet(new long[]{0x0000000000000000L,0x8208000000000000L,0x0000000000000007L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__5_in_rule__DatamartEntity__Group__419044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__0_in_rule__DatamartEntity__Group__4__Impl19071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__5__Impl_in_rule__DatamartEntity__Group__519102 = new BitSet(new long[]{0x0000000000000000L,0x8208000000000000L,0x0000000000000007L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__6_in_rule__DatamartEntity__Group__519105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__0_in_rule__DatamartEntity__Group__5__Impl19132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__6__Impl_in_rule__DatamartEntity__Group__619163 = new BitSet(new long[]{0x0000000000000000L,0x8208000000000000L,0x0000000000000007L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__7_in_rule__DatamartEntity__Group__619166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__0_in_rule__DatamartEntity__Group__6__Impl19193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__7__Impl_in_rule__DatamartEntity__Group__719224 = new BitSet(new long[]{0x0000000000000000L,0x8208000000000000L,0x0000000000000007L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__8_in_rule__DatamartEntity__Group__719227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__0_in_rule__DatamartEntity__Group__7__Impl19254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__8__Impl_in_rule__DatamartEntity__Group__819285 = new BitSet(new long[]{0x0000000000000000L,0x8208000000000000L,0x0000000000000007L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__9_in_rule__DatamartEntity__Group__819288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__0_in_rule__DatamartEntity__Group__8__Impl19315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group__9__Impl_in_rule__DatamartEntity__Group__919346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartEntity__Group__9__Impl19374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__0__Impl_in_rule__DatamartEntity__Group_4__019425 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__1_in_rule__DatamartEntity__Group_4__019428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_127_in_rule__DatamartEntity__Group_4__0__Impl19456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__1__Impl_in_rule__DatamartEntity__Group_4__119487 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__2_in_rule__DatamartEntity__Group_4__119490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartEntity__Group_4__1__Impl19518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__2__Impl_in_rule__DatamartEntity__Group_4__219549 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__3_in_rule__DatamartEntity__Group_4__219552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__NavigationsAssignment_4_2_in_rule__DatamartEntity__Group_4__2__Impl19579 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_4__3__Impl_in_rule__DatamartEntity__Group_4__319610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartEntity__Group_4__3__Impl19638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__0__Impl_in_rule__DatamartEntity__Group_5__019677 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    }
+
+    protected static class FollowSets009 {
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__1_in_rule__DatamartEntity__Group_5__019680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_128_in_rule__DatamartEntity__Group_5__0__Impl19708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__1__Impl_in_rule__DatamartEntity__Group_5__119739 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__2_in_rule__DatamartEntity__Group_5__119742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartEntity__Group_5__1__Impl19770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__2__Impl_in_rule__DatamartEntity__Group_5__219801 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__3_in_rule__DatamartEntity__Group_5__219804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__PropertiesAssignment_5_2_in_rule__DatamartEntity__Group_5__2__Impl19831 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_5__3__Impl_in_rule__DatamartEntity__Group_5__319862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartEntity__Group_5__3__Impl19890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__0__Impl_in_rule__DatamartEntity__Group_6__019929 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__1_in_rule__DatamartEntity__Group_6__019932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__DatamartEntity__Group_6__0__Impl19960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__1__Impl_in_rule__DatamartEntity__Group_6__119991 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__2_in_rule__DatamartEntity__Group_6__119994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartEntity__Group_6__1__Impl20022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__2__Impl_in_rule__DatamartEntity__Group_6__220053 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__3_in_rule__DatamartEntity__Group_6__220056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__ConditionsAssignment_6_2_in_rule__DatamartEntity__Group_6__2__Impl20083 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_6__3__Impl_in_rule__DatamartEntity__Group_6__320114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartEntity__Group_6__3__Impl20142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__0__Impl_in_rule__DatamartEntity__Group_7__020181 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__1_in_rule__DatamartEntity__Group_7__020184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_129_in_rule__DatamartEntity__Group_7__0__Impl20212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__1__Impl_in_rule__DatamartEntity__Group_7__120243 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__2_in_rule__DatamartEntity__Group_7__120246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartEntity__Group_7__1__Impl20274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__2__Impl_in_rule__DatamartEntity__Group_7__220305 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__3_in_rule__DatamartEntity__Group_7__220308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__OrderingAssignment_7_2_in_rule__DatamartEntity__Group_7__2__Impl20335 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_7__3__Impl_in_rule__DatamartEntity__Group_7__320366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartEntity__Group_7__3__Impl20394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__0__Impl_in_rule__DatamartEntity__Group_8__020433 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__1_in_rule__DatamartEntity__Group_8__020436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_130_in_rule__DatamartEntity__Group_8__0__Impl20464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__1__Impl_in_rule__DatamartEntity__Group_8__120495 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__2_in_rule__DatamartEntity__Group_8__120498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__FillerMinCountRowsAssignment_8_1_in_rule__DatamartEntity__Group_8__1__Impl20525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__2__Impl_in_rule__DatamartEntity__Group_8__220555 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__3_in_rule__DatamartEntity__Group_8__220558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_rule__DatamartEntity__Group_8__2__Impl20586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__3__Impl_in_rule__DatamartEntity__Group_8__320617 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__4_in_rule__DatamartEntity__Group_8__320620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__FillerMaxCountRowsAssignment_8_3_in_rule__DatamartEntity__Group_8__3__Impl20647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__4__Impl_in_rule__DatamartEntity__Group_8__420677 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__5_in_rule__DatamartEntity__Group_8__420680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartEntity__Group_8__4__Impl20708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__5__Impl_in_rule__DatamartEntity__Group_8__520739 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__6_in_rule__DatamartEntity__Group_8__520742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__FillerDatasAssignment_8_5_in_rule__DatamartEntity__Group_8__5__Impl20769 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DatamartEntity__Group_8__6__Impl_in_rule__DatamartEntity__Group_8__620800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartEntity__Group_8__6__Impl20828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__0__Impl_in_rule__DatamartOwner__Group__020873 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__1_in_rule__DatamartOwner__Group__020876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_132_in_rule__DatamartOwner__Group__0__Impl20904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__1__Impl_in_rule__DatamartOwner__Group__120935 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__2_in_rule__DatamartOwner__Group__120938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__JoinRefAssignment_1_in_rule__DatamartOwner__Group__1__Impl20965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__2__Impl_in_rule__DatamartOwner__Group__220995 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__3_in_rule__DatamartOwner__Group__220998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_rule__DatamartOwner__Group__2__Impl21026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__Group__3__Impl_in_rule__DatamartOwner__Group__321057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOwner__DatamartEntityAssignment_3_in_rule__DatamartOwner__Group__3__Impl21084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__0__Impl_in_rule__DatamartMember__Group__021122 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__1_in_rule__DatamartMember__Group__021125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_133_in_rule__DatamartMember__Group__0__Impl21153 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__1__Impl_in_rule__DatamartMember__Group__121184 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__2_in_rule__DatamartMember__Group__121187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__JoinRefAssignment_1_in_rule__DatamartMember__Group__1__Impl21214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__2__Impl_in_rule__DatamartMember__Group__221244 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__3_in_rule__DatamartMember__Group__221247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_rule__DatamartMember__Group__2__Impl21275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__Group__3__Impl_in_rule__DatamartMember__Group__321306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMember__DatamartEntityAssignment_3_in_rule__DatamartMember__Group__3__Impl21333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group__0__Impl_in_rule__DatamartProperty__Group__021371 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group__1_in_rule__DatamartProperty__Group__021374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__DatamartProperty__Group__0__Impl21402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group__1__Impl_in_rule__DatamartProperty__Group__121433 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L,0x0000000000000000L,0x0000000000000600L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group__2_in_rule__DatamartProperty__Group__121436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__PropertyRefAssignment_1_in_rule__DatamartProperty__Group__1__Impl21463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group__2__Impl_in_rule__DatamartProperty__Group__221493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2_in_rule__DatamartProperty__Group__2__Impl21520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_0__0__Impl_in_rule__DatamartProperty__Group_2_0__021556 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008600L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_0__1_in_rule__DatamartProperty__Group_2_0__021559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__AggregatedAssignment_2_0_0_in_rule__DatamartProperty__Group_2_0__0__Impl21586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_0__1__Impl_in_rule__DatamartProperty__Group_2_0__121616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__AggregateAssignment_2_0_1_in_rule__DatamartProperty__Group_2_0__1__Impl21643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_1__0__Impl_in_rule__DatamartProperty__Group_2_1__021677 = new BitSet(new long[]{0x01F8000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_1__1_in_rule__DatamartProperty__Group_2_1__021680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__PlacedAssignment_2_1_0_in_rule__DatamartProperty__Group_2_1__0__Impl21707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_1__1__Impl_in_rule__DatamartProperty__Group_2_1__121737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__AxisAssignment_2_1_1_in_rule__DatamartProperty__Group_2_1__1__Impl21764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_2__0__Impl_in_rule__DatamartProperty__Group_2_2__021798 = new BitSet(new long[]{0x0000000000000000L,0x0000000001FF0000L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_2__1_in_rule__DatamartProperty__Group_2_2__021801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__ScaledAssignment_2_2_0_in_rule__DatamartProperty__Group_2_2__0__Impl21828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_2__1__Impl_in_rule__DatamartProperty__Group_2_2__121858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__ScaleAssignment_2_2_1_in_rule__DatamartProperty__Group_2_2__1__Impl21885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCondition__Group__0__Impl_in_rule__DatamartCondition__Group__021919 = new BitSet(new long[]{0x00000000000001E0L,0x0C00000000000000L,0x0000000000000840L,0x0000000000002800L});
+        public static final BitSet FOLLOW_rule__DatamartCondition__Group__1_in_rule__DatamartCondition__Group__021922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__DatamartCondition__Group__0__Impl21950 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets010 {
+        public static final BitSet FOLLOW_rule__DatamartCondition__Group__1__Impl_in_rule__DatamartCondition__Group__121981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartCondition__ConditionAssignment_1_in_rule__DatamartCondition__Group__1__Impl22008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__Group__0__Impl_in_rule__DatamartOrder__Group__022042 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__Group__1_in_rule__DatamartOrder__Group__022045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_136_in_rule__DatamartOrder__Group__0__Impl22073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__Group__1__Impl_in_rule__DatamartOrder__Group__122104 = new BitSet(new long[]{0x0000000000000000L,0x0001800000000000L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__Group__2_in_rule__DatamartOrder__Group__122107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__OrderByAssignment_1_in_rule__DatamartOrder__Group__1__Impl22134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__Group__2__Impl_in_rule__DatamartOrder__Group__222164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOrder__OrderHowAssignment_2_in_rule__DatamartOrder__Group__2__Impl22191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group__0__Impl_in_rule__DatamartDisjunction__Group__022227 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group__1_in_rule__DatamartDisjunction__Group__022230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartConjunction_in_rule__DatamartDisjunction__Group__0__Impl22257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group__1__Impl_in_rule__DatamartDisjunction__Group__122286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1__0_in_rule__DatamartDisjunction__Group__1__Impl22313 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1__0__Impl_in_rule__DatamartDisjunction__Group_1__022348 = new BitSet(new long[]{0x00000000000001E0L,0x0C00000000000000L,0x0000000000000840L,0x0000000000002800L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1__1_in_rule__DatamartDisjunction__Group_1__022351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1_0__0_in_rule__DatamartDisjunction__Group_1__0__Impl22378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1__1__Impl_in_rule__DatamartDisjunction__Group_1__122408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__RightAssignment_1_1_in_rule__DatamartDisjunction__Group_1__1__Impl22435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1_0__0__Impl_in_rule__DatamartDisjunction__Group_1_0__022469 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1_0__1_in_rule__DatamartDisjunction__Group_1_0__022472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDisjunction__Group_1_0__1__Impl_in_rule__DatamartDisjunction__Group_1_0__122530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_137_in_rule__DatamartDisjunction__Group_1_0__1__Impl22558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group__0__Impl_in_rule__DatamartConjunction__Group__022593 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group__1_in_rule__DatamartConjunction__Group__022596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartConditionalExpression_in_rule__DatamartConjunction__Group__0__Impl22623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group__1__Impl_in_rule__DatamartConjunction__Group__122652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1__0_in_rule__DatamartConjunction__Group__1__Impl22679 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1__0__Impl_in_rule__DatamartConjunction__Group_1__022714 = new BitSet(new long[]{0x00000000000001E0L,0x0C00000000000000L,0x0000000000000840L,0x0000000000002800L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1__1_in_rule__DatamartConjunction__Group_1__022717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1_0__0_in_rule__DatamartConjunction__Group_1__0__Impl22744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1__1__Impl_in_rule__DatamartConjunction__Group_1__122774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__RightAssignment_1_1_in_rule__DatamartConjunction__Group_1__1__Impl22801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1_0__0__Impl_in_rule__DatamartConjunction__Group_1_0__022835 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1_0__1_in_rule__DatamartConjunction__Group_1_0__022838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConjunction__Group_1_0__1__Impl_in_rule__DatamartConjunction__Group_1_0__122896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_138_in_rule__DatamartConjunction__Group_1_0__1__Impl22924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group__0__Impl_in_rule__DatamartConditionalExpression__Group__022959 = new BitSet(new long[]{0x000000000E002000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group__1_in_rule__DatamartConditionalExpression__Group__022962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOperand_in_rule__DatamartConditionalExpression__Group__0__Impl22989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group__1__Impl_in_rule__DatamartConditionalExpression__Group__123018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1__0_in_rule__DatamartConditionalExpression__Group__1__Impl23045 = new BitSet(new long[]{0x000000000E002002L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1__0__Impl_in_rule__DatamartConditionalExpression__Group_1__023080 = new BitSet(new long[]{0x00000000000001E0L,0x0C00000000000000L,0x0000000000000840L,0x0000000000002800L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1__1_in_rule__DatamartConditionalExpression__Group_1__023083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1_0__0_in_rule__DatamartConditionalExpression__Group_1__0__Impl23110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1__1__Impl_in_rule__DatamartConditionalExpression__Group_1__123140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__RightAssignment_1_1_in_rule__DatamartConditionalExpression__Group_1__1__Impl23167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1_0__0__Impl_in_rule__DatamartConditionalExpression__Group_1_0__023201 = new BitSet(new long[]{0x000000000E002000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1_0__1_in_rule__DatamartConditionalExpression__Group_1_0__023204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__Group_1_0__1__Impl_in_rule__DatamartConditionalExpression__Group_1_0__123262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartConditionalExpression__OperatorAssignment_1_0_1_in_rule__DatamartConditionalExpression__Group_1_0__1__Impl23289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Group_1__0__Impl_in_rule__DatamartOperand__Group_1__023323 = new BitSet(new long[]{0x00000000000001E0L,0x0C00000000000000L,0x0000000000000840L,0x0000000000002800L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Group_1__1_in_rule__DatamartOperand__Group_1__023326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__DatamartOperand__Group_1__0__Impl23354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Group_1__1__Impl_in_rule__DatamartOperand__Group_1__123385 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Group_1__2_in_rule__DatamartOperand__Group_1__123388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDisjunction_in_rule__DatamartOperand__Group_1__1__Impl23415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartOperand__Group_1__2__Impl_in_rule__DatamartOperand__Group_1__223444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__DatamartOperand__Group_1__2__Impl23472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__Group_2_0__0__Impl_in_rule__DatamartValue__Group_2_0__023509 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__DatamartValue__Group_2_0__1_in_rule__DatamartValue__Group_2_0__023512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__FilteredAssignment_2_0_0_in_rule__DatamartValue__Group_2_0__0__Impl23539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__Group_2_0__1__Impl_in_rule__DatamartValue__Group_2_0__123569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartValue__OptionalAssignment_2_0_1_in_rule__DatamartValue__Group_2_0__1__Impl23596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__0__Impl_in_rule__DatamartDefineDerivedMeasure__Group__023631 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__1_in_rule__DatamartDefineDerivedMeasure__Group__023634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_141_in_rule__DatamartDefineDerivedMeasure__Group__0__Impl23662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__1__Impl_in_rule__DatamartDefineDerivedMeasure__Group__123693 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__2_in_rule__DatamartDefineDerivedMeasure__Group__123696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__NameAssignment_1_in_rule__DatamartDefineDerivedMeasure__Group__1__Impl23723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__2__Impl_in_rule__DatamartDefineDerivedMeasure__Group__223753 = new BitSet(new long[]{0x7E000000000001C0L,0x0000000000001E00L,0x0000000000380800L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__3_in_rule__DatamartDefineDerivedMeasure__Group__223756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_142_in_rule__DatamartDefineDerivedMeasure__Group__2__Impl23784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__Group__3__Impl_in_rule__DatamartDefineDerivedMeasure__Group__323815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDefineDerivedMeasure__DerivedElementAssignment_3_in_rule__DatamartDefineDerivedMeasure__Group__3__Impl23842 = new BitSet(new long[]{0x7E000000000001C2L,0x0000000000001E00L,0x0000000000380800L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group__0__Impl_in_rule__DatamartAddition__Group__023881 = new BitSet(new long[]{0x0000000C00000000L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group__1_in_rule__DatamartAddition__Group__023884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMultiplication_in_rule__DatamartAddition__Group__0__Impl23911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group__1__Impl_in_rule__DatamartAddition__Group__123940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1__0_in_rule__DatamartAddition__Group__1__Impl23967 = new BitSet(new long[]{0x0000000C00000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1__0__Impl_in_rule__DatamartAddition__Group_1__024002 = new BitSet(new long[]{0x7E000000000001C0L,0x0000000000001E00L,0x0000000000380800L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1__1_in_rule__DatamartAddition__Group_1__024005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Alternatives_1_0_in_rule__DatamartAddition__Group_1__0__Impl24032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1__1__Impl_in_rule__DatamartAddition__Group_1__124062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__RightAssignment_1_1_in_rule__DatamartAddition__Group_1__1__Impl24089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_0__0__Impl_in_rule__DatamartAddition__Group_1_0_0__024123 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_0__1_in_rule__DatamartAddition__Group_1_0_0__024126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_0__1__Impl_in_rule__DatamartAddition__Group_1_0_0__124184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__DatamartAddition__Group_1_0_0__1__Impl24212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_1__0__Impl_in_rule__DatamartAddition__Group_1_0_1__024247 = new BitSet(new long[]{0x0000000C00000000L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_1__1_in_rule__DatamartAddition__Group_1_0_1__024250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAddition__Group_1_0_1__1__Impl_in_rule__DatamartAddition__Group_1_0_1__124308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__DatamartAddition__Group_1_0_1__1__Impl24336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group__0__Impl_in_rule__DatamartMultiplication__Group__024371 = new BitSet(new long[]{0x0000005000000000L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group__1_in_rule__DatamartMultiplication__Group__024374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartPrimary_in_rule__DatamartMultiplication__Group__0__Impl24401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group__1__Impl_in_rule__DatamartMultiplication__Group__124430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1__0_in_rule__DatamartMultiplication__Group__1__Impl24457 = new BitSet(new long[]{0x0000005000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1__0__Impl_in_rule__DatamartMultiplication__Group_1__024492 = new BitSet(new long[]{0x7E000000000001C0L,0x0000000000001E00L,0x0000000000380800L});
+    }
+
+    protected static class FollowSets011 {
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1__1_in_rule__DatamartMultiplication__Group_1__024495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Alternatives_1_0_in_rule__DatamartMultiplication__Group_1__0__Impl24522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1__1__Impl_in_rule__DatamartMultiplication__Group_1__124552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__RightAssignment_1_1_in_rule__DatamartMultiplication__Group_1__1__Impl24579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_0__0__Impl_in_rule__DatamartMultiplication__Group_1_0_0__024613 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_0__1_in_rule__DatamartMultiplication__Group_1_0_0__024616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_0__1__Impl_in_rule__DatamartMultiplication__Group_1_0_0__124674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__DatamartMultiplication__Group_1_0_0__1__Impl24702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_1__0__Impl_in_rule__DatamartMultiplication__Group_1_0_1__024737 = new BitSet(new long[]{0x0000005000000000L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_1__1_in_rule__DatamartMultiplication__Group_1_0_1__024740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMultiplication__Group_1_0_1__1__Impl_in_rule__DatamartMultiplication__Group_1_0_1__124798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__DatamartMultiplication__Group_1_0_1__1__Impl24826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Group_1__0__Impl_in_rule__DatamartPrimary__Group_1__024861 = new BitSet(new long[]{0x7E000000000001C0L,0x0000000000001E00L,0x0000000000380800L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Group_1__1_in_rule__DatamartPrimary__Group_1__024864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__DatamartPrimary__Group_1__0__Impl24892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Group_1__1__Impl_in_rule__DatamartPrimary__Group_1__124923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Group_1__2_in_rule__DatamartPrimary__Group_1__124926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAddition_in_rule__DatamartPrimary__Group_1__1__Impl24953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartPrimary__Group_1__2__Impl_in_rule__DatamartPrimary__Group_1__224982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__DatamartPrimary__Group_1__2__Impl25010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group__0__Impl_in_rule__DatamartMemberTuple__Group__025047 = new BitSet(new long[]{0x7E00000000000000L,0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group__1_in_rule__DatamartMemberTuple__Group__025050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_0__0_in_rule__DatamartMemberTuple__Group__0__Impl25077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group__1__Impl_in_rule__DatamartMemberTuple__Group__125108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group__2_in_rule__DatamartMemberTuple__Group__125111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__HierarchyAssignment_1_in_rule__DatamartMemberTuple__Group__1__Impl25138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group__2__Impl_in_rule__DatamartMemberTuple__Group__225168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_2__0_in_rule__DatamartMemberTuple__Group__2__Impl25195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_0__0__Impl_in_rule__DatamartMemberTuple__Group_0__025231 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_0__1_in_rule__DatamartMemberTuple__Group_0__025234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Alternatives_0_0_in_rule__DatamartMemberTuple__Group_0__0__Impl25261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_0__1__Impl_in_rule__DatamartMemberTuple__Group_0__125291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__DatamartMemberTuple__Group_0__1__Impl25319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_2__0__Impl_in_rule__DatamartMemberTuple__Group_2__025354 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_2__1_in_rule__DatamartMemberTuple__Group_2__025357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_2__1__Impl_in_rule__DatamartMemberTuple__Group_2__125415 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_2__2_in_rule__DatamartMemberTuple__Group_2__125418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_144_in_rule__DatamartMemberTuple__Group_2__1__Impl25446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__Group_2__2__Impl_in_rule__DatamartMemberTuple__Group_2__225477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMemberTuple__RightAssignment_2_2_in_rule__DatamartMemberTuple__Group_2__2__Impl25504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__0__Impl_in_rule__DatamartParameterFunction__Group__025540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__1_in_rule__DatamartParameterFunction__Group__025543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__FunctionAssignment_0_in_rule__DatamartParameterFunction__Group__0__Impl25570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__1__Impl_in_rule__DatamartParameterFunction__Group__125600 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__2_in_rule__DatamartParameterFunction__Group__125603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__DatamartParameterFunction__Group__1__Impl25631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__2__Impl_in_rule__DatamartParameterFunction__Group__225662 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__3_in_rule__DatamartParameterFunction__Group__225665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__ParameterAssignment_2_in_rule__DatamartParameterFunction__Group__2__Impl25692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartParameterFunction__Group__3__Impl_in_rule__DatamartParameterFunction__Group__325722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__DatamartParameterFunction__Group__3__Impl25750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__0__Impl_in_rule__DatamartSetParameterFunction__Group__025789 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__1_in_rule__DatamartSetParameterFunction__Group__025792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__SetFunctionAssignment_0_in_rule__DatamartSetParameterFunction__Group__0__Impl25819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__1__Impl_in_rule__DatamartSetParameterFunction__Group__125849 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__2_in_rule__DatamartSetParameterFunction__Group__125852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__DatamartSetParameterFunction__Group__1__Impl25880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__2__Impl_in_rule__DatamartSetParameterFunction__Group__225911 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__3_in_rule__DatamartSetParameterFunction__Group__225914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__ParameterAssignment_2_in_rule__DatamartSetParameterFunction__Group__2__Impl25941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetParameterFunction__Group__3__Impl_in_rule__DatamartSetParameterFunction__Group__325971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__DatamartSetParameterFunction__Group__3__Impl25999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__0__Impl_in_rule__DatamartSetAggregationFunction__Group__026038 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__1_in_rule__DatamartSetAggregationFunction__Group__026041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__AggregationAssignment_0_in_rule__DatamartSetAggregationFunction__Group__0__Impl26068 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__1__Impl_in_rule__DatamartSetAggregationFunction__Group__126098 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__2_in_rule__DatamartSetAggregationFunction__Group__126101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__DatamartSetAggregationFunction__Group__1__Impl26129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__2__Impl_in_rule__DatamartSetAggregationFunction__Group__226160 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__3_in_rule__DatamartSetAggregationFunction__Group__226163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__ParameterAssignment_2_in_rule__DatamartSetAggregationFunction__Group__2__Impl26190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregationFunction__Group__3__Impl_in_rule__DatamartSetAggregationFunction__Group__326220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__DatamartSetAggregationFunction__Group__3__Impl26248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group__0__Impl_in_rule__DatamartSetTuple__Group__026287 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group__1_in_rule__DatamartSetTuple__Group__026290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Alternatives_0_in_rule__DatamartSetTuple__Group__0__Impl26317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group__1__Impl_in_rule__DatamartSetTuple__Group__126347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group_1__0_in_rule__DatamartSetTuple__Group__1__Impl26374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group_1__0__Impl_in_rule__DatamartSetTuple__Group_1__026408 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group_1__1_in_rule__DatamartSetTuple__Group_1__026411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group_1__1__Impl_in_rule__DatamartSetTuple__Group_1__126469 = new BitSet(new long[]{0x7E00000000000000L,0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group_1__2_in_rule__DatamartSetTuple__Group_1__126472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__DatamartSetTuple__Group_1__1__Impl26500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__Group_1__2__Impl_in_rule__DatamartSetTuple__Group_1__226531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetTuple__RightAssignment_1_2_in_rule__DatamartSetTuple__Group_1__2__Impl26558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__0__Impl_in_rule__DatamartAggregation__Group__026594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__1_in_rule__DatamartAggregation__Group__026597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__AggregationAssignment_0_in_rule__DatamartAggregation__Group__0__Impl26624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__1__Impl_in_rule__DatamartAggregation__Group__126654 = new BitSet(new long[]{0xFE00000000000000L,0x0000000000000007L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__2_in_rule__DatamartAggregation__Group__126657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__DatamartAggregation__Group__1__Impl26685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__2__Impl_in_rule__DatamartAggregation__Group__226716 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__3_in_rule__DatamartAggregation__Group__226719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Alternatives_2_in_rule__DatamartAggregation__Group__2__Impl26746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group__3__Impl_in_rule__DatamartAggregation__Group__326776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group_3__0_in_rule__DatamartAggregation__Group__3__Impl26803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group_3__0__Impl_in_rule__DatamartAggregation__Group_3__026841 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group_3__1_in_rule__DatamartAggregation__Group_3__026844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group_3__1__Impl_in_rule__DatamartAggregation__Group_3__126902 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group_3__2_in_rule__DatamartAggregation__Group_3__126905 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets012 {
+        public static final BitSet FOLLOW_144_in_rule__DatamartAggregation__Group_3__1__Impl26933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__Group_3__2__Impl_in_rule__DatamartAggregation__Group_3__226964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAggregation__RightAssignment_3_2_in_rule__DatamartAggregation__Group_3__2__Impl26991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__0__Impl_in_rule__DatamartSetAggregation__Group__027027 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__1_in_rule__DatamartSetAggregation__Group__027030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__AggregationAssignment_0_in_rule__DatamartSetAggregation__Group__0__Impl27057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__1__Impl_in_rule__DatamartSetAggregation__Group__127087 = new BitSet(new long[]{0xFE00000000000000L,0x0000000000000007L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__2_in_rule__DatamartSetAggregation__Group__127090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__DatamartSetAggregation__Group__1__Impl27118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__2__Impl_in_rule__DatamartSetAggregation__Group__227149 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__3_in_rule__DatamartSetAggregation__Group__227152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Alternatives_2_in_rule__DatamartSetAggregation__Group__2__Impl27179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group__3__Impl_in_rule__DatamartSetAggregation__Group__327209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group_3__0_in_rule__DatamartSetAggregation__Group__3__Impl27236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group_3__0__Impl_in_rule__DatamartSetAggregation__Group_3__027274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group_3__1_in_rule__DatamartSetAggregation__Group_3__027277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group_3__1__Impl_in_rule__DatamartSetAggregation__Group_3__127335 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group_3__2_in_rule__DatamartSetAggregation__Group_3__127338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_144_in_rule__DatamartSetAggregation__Group_3__1__Impl27366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__Group_3__2__Impl_in_rule__DatamartSetAggregation__Group_3__227397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSetAggregation__RightAssignment_3_2_in_rule__DatamartSetAggregation__Group_3__2__Impl27424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSlicer__Group__0__Impl_in_rule__DatamartSlicer__Group__027460 = new BitSet(new long[]{0x7E00000000000000L,0x00000000000001F8L,0x0000000000380000L});
+        public static final BitSet FOLLOW_rule__DatamartSlicer__Group__1_in_rule__DatamartSlicer__Group__027463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_145_in_rule__DatamartSlicer__Group__0__Impl27491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSlicer__Group__1__Impl_in_rule__DatamartSlicer__Group__127522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartSlicer__ElementAssignment_1_in_rule__DatamartSlicer__Group__1__Impl27549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__0__Impl_in_rule__DatamartAxis__Group__027583 = new BitSet(new long[]{0x01F8000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__1_in_rule__DatamartAxis__Group__027586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_146_in_rule__DatamartAxis__Group__0__Impl27614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__1__Impl_in_rule__DatamartAxis__Group__127645 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__2_in_rule__DatamartAxis__Group__127648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__NameAssignment_1_in_rule__DatamartAxis__Group__1__Impl27675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__2__Impl_in_rule__DatamartAxis__Group__227705 = new BitSet(new long[]{0x7E00000000000000L,0x00080000000001F8L,0x0000000000380000L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__3_in_rule__DatamartAxis__Group__227708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DatamartAxis__Group__2__Impl27736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__3__Impl_in_rule__DatamartAxis__Group__327767 = new BitSet(new long[]{0x7E00000000000000L,0x00080000000001F8L,0x0000000000380000L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__4_in_rule__DatamartAxis__Group__327770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__ElementsAssignment_3_in_rule__DatamartAxis__Group__3__Impl27797 = new BitSet(new long[]{0x7E00000000000002L,0x00000000000001F8L,0x0000000000380000L});
+        public static final BitSet FOLLOW_rule__DatamartAxis__Group__4__Impl_in_rule__DatamartAxis__Group__427828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DatamartAxis__Group__4__Impl27856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group__0__Impl_in_rule__DatamartDerivedMeasure__Group__027897 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group__1_in_rule__DatamartDerivedMeasure__Group__027900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__DatamartDerivedMeasure__Group__0__Impl27928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group__1__Impl_in_rule__DatamartDerivedMeasure__Group__127959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group__2_in_rule__DatamartDerivedMeasure__Group__127962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__DerivedRefAssignment_1_in_rule__DatamartDerivedMeasure__Group__1__Impl27989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group__2__Impl_in_rule__DatamartDerivedMeasure__Group__228019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group_2__0_in_rule__DatamartDerivedMeasure__Group__2__Impl28046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group_2__0__Impl_in_rule__DatamartDerivedMeasure__Group_2__028083 = new BitSet(new long[]{0x0000000000000000L,0x0000000001FF0000L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group_2__1_in_rule__DatamartDerivedMeasure__Group_2__028086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__ScaledAssignment_2_0_in_rule__DatamartDerivedMeasure__Group_2__0__Impl28113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__Group_2__1__Impl_in_rule__DatamartDerivedMeasure__Group_2__128143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartDerivedMeasure__ScaleAssignment_2_1_in_rule__DatamartDerivedMeasure__Group_2__1__Impl28170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group__0__Impl_in_rule__DatamartMeasure__Group__028204 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group__1_in_rule__DatamartMeasure__Group__028207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_148_in_rule__DatamartMeasure__Group__0__Impl28235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group__1__Impl_in_rule__DatamartMeasure__Group__128266 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group__2_in_rule__DatamartMeasure__Group__128269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__MeasureRefAssignment_1_in_rule__DatamartMeasure__Group__1__Impl28296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group__2__Impl_in_rule__DatamartMeasure__Group__228326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group_2__0_in_rule__DatamartMeasure__Group__2__Impl28353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group_2__0__Impl_in_rule__DatamartMeasure__Group_2__028390 = new BitSet(new long[]{0x0000000000000000L,0x0000000001FF0000L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group_2__1_in_rule__DatamartMeasure__Group_2__028393 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__ScaledAssignment_2_0_in_rule__DatamartMeasure__Group_2__0__Impl28420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__Group_2__1__Impl_in_rule__DatamartMeasure__Group_2__128450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartMeasure__ScaleAssignment_2_1_in_rule__DatamartMeasure__Group_2__1__Impl28477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__0__Impl_in_rule__DatamartHierarchy__Group__028511 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__1_in_rule__DatamartHierarchy__Group__028514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_149_in_rule__DatamartHierarchy__Group__0__Impl28542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__1__Impl_in_rule__DatamartHierarchy__Group__128573 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000000400000L,0x000000000001C000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__2_in_rule__DatamartHierarchy__Group__128576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__HierarchyRefAssignment_1_in_rule__DatamartHierarchy__Group__1__Impl28603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__2__Impl_in_rule__DatamartHierarchy__Group__228633 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000000400000L,0x000000000001C000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__3_in_rule__DatamartHierarchy__Group__228636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__DefaultMemberAssignment_2_in_rule__DatamartHierarchy__Group__2__Impl28663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__3__Impl_in_rule__DatamartHierarchy__Group__328694 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000000400000L,0x000000000001C000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__4_in_rule__DatamartHierarchy__Group__328697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__AllMemberAssignment_3_in_rule__DatamartHierarchy__Group__3__Impl28724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__4__Impl_in_rule__DatamartHierarchy__Group__428755 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000000400000L,0x000000000001C000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__5_in_rule__DatamartHierarchy__Group__428758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__AllLevelsAssignment_4_in_rule__DatamartHierarchy__Group__4__Impl28785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__5__Impl_in_rule__DatamartHierarchy__Group__528816 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000000400000L,0x000000000001C000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__6_in_rule__DatamartHierarchy__Group__528819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_5__0_in_rule__DatamartHierarchy__Group__5__Impl28846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group__6__Impl_in_rule__DatamartHierarchy__Group__628877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6__0_in_rule__DatamartHierarchy__Group__6__Impl28904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_5__0__Impl_in_rule__DatamartHierarchy__Group_5__028949 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_5__1_in_rule__DatamartHierarchy__Group_5__028952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_150_in_rule__DatamartHierarchy__Group_5__0__Impl28980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_5__1__Impl_in_rule__DatamartHierarchy__Group_5__129011 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000002800L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_5__2_in_rule__DatamartHierarchy__Group_5__129014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__LevelRefAssignment_5_1_in_rule__DatamartHierarchy__Group_5__1__Impl29041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_5__2__Impl_in_rule__DatamartHierarchy__Group_5__229071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Alternatives_5_2_in_rule__DatamartHierarchy__Group_5__2__Impl29098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6__0__Impl_in_rule__DatamartHierarchy__Group_6__029135 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000060000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6__1_in_rule__DatamartHierarchy__Group_6__029138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__AllAssignment_6_0_in_rule__DatamartHierarchy__Group_6__0__Impl29165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6__1__Impl_in_rule__DatamartHierarchy__Group_6__129195 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000060000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6__2_in_rule__DatamartHierarchy__Group_6__129198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_1__0_in_rule__DatamartHierarchy__Group_6__1__Impl29225 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets013 {
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6__2__Impl_in_rule__DatamartHierarchy__Group_6__229256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_2__0_in_rule__DatamartHierarchy__Group_6__2__Impl29283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_1__0__Impl_in_rule__DatamartHierarchy__Group_6_1__029320 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_1__1_in_rule__DatamartHierarchy__Group_6_1__029323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__ExceptAssignment_6_1_0_in_rule__DatamartHierarchy__Group_6_1__0__Impl29350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_1__1__Impl_in_rule__DatamartHierarchy__Group_6_1__129380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__ExceptRefAssignment_6_1_1_in_rule__DatamartHierarchy__Group_6_1__1__Impl29407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_2__0__Impl_in_rule__DatamartHierarchy__Group_6_2__029441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000180000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_2__1_in_rule__DatamartHierarchy__Group_6_2__029444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__OrderedAssignment_6_2_0_in_rule__DatamartHierarchy__Group_6_2__0__Impl29471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_2__1__Impl_in_rule__DatamartHierarchy__Group_6_2__129501 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_2__2_in_rule__DatamartHierarchy__Group_6_2__129504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__OrderRefAssignment_6_2_1_in_rule__DatamartHierarchy__Group_6_2__1__Impl29531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__Group_6_2__2__Impl_in_rule__DatamartHierarchy__Group_6_2__229561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__DescendingAssignment_6_2_2_in_rule__DatamartHierarchy__Group_6_2__2__Impl29588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartImport__Group__0__Impl_in_rule__DatamartImport__Group__029625 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DatamartImport__Group__1_in_rule__DatamartImport__Group__029628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__DatamartImport__Group__0__Impl29656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartImport__Group__1__Impl_in_rule__DatamartImport__Group__129687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartImport__ImportedNamespaceAssignment_1_in_rule__DatamartImport__Group__1__Impl29714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group__0__Impl_in_rule__DatamartQualifiedNameWithWildCard__Group__029748 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group__1_in_rule__DatamartQualifiedNameWithWildCard__Group__029751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__DatamartQualifiedNameWithWildCard__Group__0__Impl29778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group__1__Impl_in_rule__DatamartQualifiedNameWithWildCard__Group__129807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group_1__0_in_rule__DatamartQualifiedNameWithWildCard__Group__1__Impl29834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group_1__0__Impl_in_rule__DatamartQualifiedNameWithWildCard__Group_1__029869 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group_1__1_in_rule__DatamartQualifiedNameWithWildCard__Group_1__029872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__DatamartQualifiedNameWithWildCard__Group_1__0__Impl29900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartQualifiedNameWithWildCard__Group_1__1__Impl_in_rule__DatamartQualifiedNameWithWildCard__Group_1__129931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__DatamartQualifiedNameWithWildCard__Group_1__1__Impl29959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0__Impl_in_rule__QualifiedName__Group__029994 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__1_in_rule__QualifiedName__Group__029997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedName__Group__0__Impl30024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__1__Impl_in_rule__QualifiedName__Group__130053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__0_in_rule__QualifiedName__Group__1__Impl30080 = new BitSet(new long[]{0x0000080000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__0__Impl_in_rule__QualifiedName__Group_1__030115 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__1_in_rule__QualifiedName__Group_1__030118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__QualifiedName__Group_1__0__Impl30147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group_1__1__Impl_in_rule__QualifiedName__Group_1__130179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedName__Group_1__1__Impl30206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__0__Impl_in_rule__PropertyFillerData__Group__030239 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__1_in_rule__PropertyFillerData__Group__030242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_151_in_rule__PropertyFillerData__Group__0__Impl30270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__1__Impl_in_rule__PropertyFillerData__Group__130301 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__2_in_rule__PropertyFillerData__Group__130304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__PropertyRefAssignment_1_in_rule__PropertyFillerData__Group__1__Impl30331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__2__Impl_in_rule__PropertyFillerData__Group__230361 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000FFE5A000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__3_in_rule__PropertyFillerData__Group__230364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_rule__PropertyFillerData__Group__2__Impl30392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__Group__3__Impl_in_rule__PropertyFillerData__Group__330423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerData__FillerTypeAssignment_3_in_rule__PropertyFillerData__Group__3__Impl30450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__0__Impl_in_rule__PropertyFillerDateFuture__Group__030488 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__1_in_rule__PropertyFillerDateFuture__Group__030491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_153_in_rule__PropertyFillerDateFuture__Group__0__Impl30519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__1__Impl_in_rule__PropertyFillerDateFuture__Group__130550 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__2_in_rule__PropertyFillerDateFuture__Group__130553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__DateFutureYearsAssignment_1_in_rule__PropertyFillerDateFuture__Group__1__Impl30580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateFuture__Group__2__Impl_in_rule__PropertyFillerDateFuture__Group__230610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_rule__PropertyFillerDateFuture__Group__2__Impl30638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__0__Impl_in_rule__PropertyFillerDatePast__Group__030675 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__1_in_rule__PropertyFillerDatePast__Group__030678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_155_in_rule__PropertyFillerDatePast__Group__0__Impl30706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__1__Impl_in_rule__PropertyFillerDatePast__Group__130737 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__2_in_rule__PropertyFillerDatePast__Group__130740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__DatePastYearsAssignment_1_in_rule__PropertyFillerDatePast__Group__1__Impl30767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDatePast__Group__2__Impl_in_rule__PropertyFillerDatePast__Group__230797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_rule__PropertyFillerDatePast__Group__2__Impl30825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__0__Impl_in_rule__PropertyFillerDateRange__Group__030862 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__1_in_rule__PropertyFillerDateRange__Group__030865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_156_in_rule__PropertyFillerDateRange__Group__0__Impl30893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__1__Impl_in_rule__PropertyFillerDateRange__Group__130924 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__2_in_rule__PropertyFillerDateRange__Group__130927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__DateBeginYearsAssignment_1_in_rule__PropertyFillerDateRange__Group__1__Impl30954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__2__Impl_in_rule__PropertyFillerDateRange__Group__230984 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__3_in_rule__PropertyFillerDateRange__Group__230987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__PropertyFillerDateRange__Group__2__Impl31015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__3__Impl_in_rule__PropertyFillerDateRange__Group__331046 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__4_in_rule__PropertyFillerDateRange__Group__331049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__DateEndYearsAssignment_3_in_rule__PropertyFillerDateRange__Group__3__Impl31076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerDateRange__Group__4__Impl_in_rule__PropertyFillerDateRange__Group__431106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_rule__PropertyFillerDateRange__Group__4__Impl31134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__0__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__031175 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000021000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__1_in_rule__PropertyFillerSignedDoubleRange__Group__031178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_158_in_rule__PropertyFillerSignedDoubleRange__Group__0__Impl31206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__1__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__131237 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000021000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__2_in_rule__PropertyFillerSignedDoubleRange__Group__131240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__0_in_rule__PropertyFillerSignedDoubleRange__Group__1__Impl31267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__2__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__231298 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__3_in_rule__PropertyFillerSignedDoubleRange__Group__231301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_rule__PropertyFillerSignedDoubleRange__Group__2__Impl31329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__3__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__331360 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__4_in_rule__PropertyFillerSignedDoubleRange__Group__331363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_3_in_rule__PropertyFillerSignedDoubleRange__Group__3__Impl31390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__4__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__431420 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__5_in_rule__PropertyFillerSignedDoubleRange__Group__431423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_159_in_rule__PropertyFillerSignedDoubleRange__Group__4__Impl31451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group__5__Impl_in_rule__PropertyFillerSignedDoubleRange__Group__531482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__0_in_rule__PropertyFillerSignedDoubleRange__Group__5__Impl31509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__0__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_1__031552 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__1_in_rule__PropertyFillerSignedDoubleRange__Group_1__031555 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets014 {
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Alternatives_1_0_in_rule__PropertyFillerSignedDoubleRange__Group_1__0__Impl31582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__1__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_1__131613 = new BitSet(new long[]{0x0000000800000090L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__2_in_rule__PropertyFillerSignedDoubleRange__Group_1__131616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__PropertyFillerSignedDoubleRange__Group_1__1__Impl31644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_1__2__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_1__231675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Alternatives_1_2_in_rule__PropertyFillerSignedDoubleRange__Group_1__2__Impl31702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__0__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_5__031738 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__1_in_rule__PropertyFillerSignedDoubleRange__Group_5__031741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rule__PropertyFillerSignedDoubleRange__Group_5__0__Impl31769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__Group_5__1__Impl_in_rule__PropertyFillerSignedDoubleRange__Group_5__131800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_1_in_rule__PropertyFillerSignedDoubleRange__Group_5__1__Impl31827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__0__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__031861 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__1_in_rule__PropertyFillerSignedDoubleRandom__Group__031864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_161_in_rule__PropertyFillerSignedDoubleRandom__Group__0__Impl31892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__1__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__131923 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__2_in_rule__PropertyFillerSignedDoubleRandom__Group__131926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__PropertyFillerSignedDoubleRandom__Group__1__Impl31954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__2__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__231985 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__3_in_rule__PropertyFillerSignedDoubleRandom__Group__231988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedDoubleRandom__Group__2__Impl32017 = new BitSet(new long[]{0x0000000800000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedDoubleRandom__Group__2__Impl32029 = new BitSet(new long[]{0x0000000800000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedDoubleRandom__Group__3__Impl_in_rule__PropertyFillerSignedDoubleRandom__Group__332062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__PropertyFillerSignedDoubleRandom__Group__3__Impl32090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__0__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__032129 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__1_in_rule__PropertyFillerSignedIntegerRange__Group__032132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__1__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__132190 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000120000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__2_in_rule__PropertyFillerSignedIntegerRange__Group__132193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_162_in_rule__PropertyFillerSignedIntegerRange__Group__1__Impl32221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__2__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__232252 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000120000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__3_in_rule__PropertyFillerSignedIntegerRange__Group__232255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__0_in_rule__PropertyFillerSignedIntegerRange__Group__2__Impl32282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group__3__Impl_in_rule__PropertyFillerSignedIntegerRange__Group__332313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__0_in_rule__PropertyFillerSignedIntegerRange__Group__3__Impl32340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__0__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_2__032379 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__1_in_rule__PropertyFillerSignedIntegerRange__Group_2__032382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Alternatives_2_0_in_rule__PropertyFillerSignedIntegerRange__Group_2__0__Impl32409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__1__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_2__132440 = new BitSet(new long[]{0x0000000800000090L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__2_in_rule__PropertyFillerSignedIntegerRange__Group_2__132443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__PropertyFillerSignedIntegerRange__Group_2__1__Impl32471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_2__2__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_2__232502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Alternatives_2_2_in_rule__PropertyFillerSignedIntegerRange__Group_2__2__Impl32529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__0__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_3__032565 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__1_in_rule__PropertyFillerSignedIntegerRange__Group_3__032568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rule__PropertyFillerSignedIntegerRange__Group_3__0__Impl32596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__Group_3__1__Impl_in_rule__PropertyFillerSignedIntegerRange__Group_3__132627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_1_in_rule__PropertyFillerSignedIntegerRange__Group_3__1__Impl32654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__0__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__032688 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__1_in_rule__PropertyFillerSignedIntegerRandom__Group__032691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_rule__PropertyFillerSignedIntegerRandom__Group__0__Impl32719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__1__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__132750 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__2_in_rule__PropertyFillerSignedIntegerRandom__Group__132753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__PropertyFillerSignedIntegerRandom__Group__1__Impl32781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__2__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__232812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__3_in_rule__PropertyFillerSignedIntegerRandom__Group__232815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedIntegerRandom__Group__2__Impl32844 = new BitSet(new long[]{0x0000000800000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerSignedIntegerRandom__Group__2__Impl32856 = new BitSet(new long[]{0x0000000800000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerSignedIntegerRandom__Group__3__Impl_in_rule__PropertyFillerSignedIntegerRandom__Group__332889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__PropertyFillerSignedIntegerRandom__Group__3__Impl32917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__0__Impl_in_rule__PropertyFillerTextRandom__Group__032956 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__1_in_rule__PropertyFillerTextRandom__Group__032959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_164_in_rule__PropertyFillerTextRandom__Group__0__Impl32987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__1__Impl_in_rule__PropertyFillerTextRandom__Group__133018 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__2_in_rule__PropertyFillerTextRandom__Group__133021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__PropertyFillerTextRandom__Group__1__Impl33049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__2__Impl_in_rule__PropertyFillerTextRandom__Group__233080 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__3_in_rule__PropertyFillerTextRandom__Group__233083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__ItemsAssignment_2_in_rule__PropertyFillerTextRandom__Group__2__Impl33112 = new BitSet(new long[]{0x0000000000000022L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__ItemsAssignment_2_in_rule__PropertyFillerTextRandom__Group__2__Impl33124 = new BitSet(new long[]{0x0000000000000022L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextRandom__Group__3__Impl_in_rule__PropertyFillerTextRandom__Group__333157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__PropertyFillerTextRandom__Group__3__Impl33185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__0__Impl_in_rule__PropertyFillerTextParagraphs__Group__033224 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__1_in_rule__PropertyFillerTextParagraphs__Group__033227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__1__Impl_in_rule__PropertyFillerTextParagraphs__Group__133285 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__2_in_rule__PropertyFillerTextParagraphs__Group__133288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_rule__PropertyFillerTextParagraphs__Group__1__Impl33316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__Group__2__Impl_in_rule__PropertyFillerTextParagraphs__Group__233347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextParagraphs__CountAssignment_2_in_rule__PropertyFillerTextParagraphs__Group__2__Impl33374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__0__Impl_in_rule__PropertyFillerTextSentences__Group__033411 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__1_in_rule__PropertyFillerTextSentences__Group__033414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__1__Impl_in_rule__PropertyFillerTextSentences__Group__133472 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__2_in_rule__PropertyFillerTextSentences__Group__133475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_166_in_rule__PropertyFillerTextSentences__Group__1__Impl33503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__Group__2__Impl_in_rule__PropertyFillerTextSentences__Group__233534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextSentences__CountAssignment_2_in_rule__PropertyFillerTextSentences__Group__2__Impl33561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__0__Impl_in_rule__PropertyFillerTextWords__Group__033598 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__1_in_rule__PropertyFillerTextWords__Group__033601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__1__Impl_in_rule__PropertyFillerTextWords__Group__133659 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__2_in_rule__PropertyFillerTextWords__Group__133662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_167_in_rule__PropertyFillerTextWords__Group__1__Impl33690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__Group__2__Impl_in_rule__PropertyFillerTextWords__Group__233721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerTextWords__CountAssignment_2_in_rule__PropertyFillerTextWords__Group__2__Impl33748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__0__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__033785 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000021000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__1_in_rule__PropertyFillerUnsignedDoubleRange__Group__033788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_168_in_rule__PropertyFillerUnsignedDoubleRange__Group__0__Impl33816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__1__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__133847 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000021000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__2_in_rule__PropertyFillerUnsignedDoubleRange__Group__133850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__0_in_rule__PropertyFillerUnsignedDoubleRange__Group__1__Impl33877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__2__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__233908 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__3_in_rule__PropertyFillerUnsignedDoubleRange__Group__233911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_rule__PropertyFillerUnsignedDoubleRange__Group__2__Impl33939 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets015 {
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__3__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__333970 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__4_in_rule__PropertyFillerUnsignedDoubleRange__Group__333973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__DecimalsAssignment_3_in_rule__PropertyFillerUnsignedDoubleRange__Group__3__Impl34000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__4__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__434030 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__5_in_rule__PropertyFillerUnsignedDoubleRange__Group__434033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_159_in_rule__PropertyFillerUnsignedDoubleRange__Group__4__Impl34061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group__5__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group__534092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__0_in_rule__PropertyFillerUnsignedDoubleRange__Group__5__Impl34119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__0__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__034162 = new BitSet(new long[]{0x0000000800000090L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__1_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__034165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_0_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__0__Impl34192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__1__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__134223 = new BitSet(new long[]{0x0000000800000090L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__2_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__134226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__1__Impl34254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_1__2__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__234285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Alternatives_1_2_in_rule__PropertyFillerUnsignedDoubleRange__Group_1__2__Impl34312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__0__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__034348 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__1_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__034351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__0__Impl34379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__Group_5__1__Impl_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__134410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRange__RoundedAssignment_5_1_in_rule__PropertyFillerUnsignedDoubleRange__Group_5__1__Impl34437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__0__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__034471 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__1_in_rule__PropertyFillerUnsignedDoubleRandom__Group__034474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_169_in_rule__PropertyFillerUnsignedDoubleRandom__Group__0__Impl34502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__1__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__134533 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__2_in_rule__PropertyFillerUnsignedDoubleRandom__Group__134536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__PropertyFillerUnsignedDoubleRandom__Group__1__Impl34564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__234595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__3_in_rule__PropertyFillerUnsignedDoubleRandom__Group__234598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl34627 = new BitSet(new long[]{0x0000000800000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedDoubleRandom__Group__2__Impl34639 = new BitSet(new long[]{0x0000000800000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedDoubleRandom__Group__3__Impl_in_rule__PropertyFillerUnsignedDoubleRandom__Group__334672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__PropertyFillerUnsignedDoubleRandom__Group__3__Impl34700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__0__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__034739 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000040000000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__1_in_rule__PropertyFillerUnsignedIntegerRange__Group__034742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__1__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__134800 = new BitSet(new long[]{0x0000000000000090L,0x0000000000000000L,0x0000000120000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__2_in_rule__PropertyFillerUnsignedIntegerRange__Group__134803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_170_in_rule__PropertyFillerUnsignedIntegerRange__Group__1__Impl34831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__2__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__234862 = new BitSet(new long[]{0x0000000000000090L,0x0000000000000000L,0x0000000120000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__3_in_rule__PropertyFillerUnsignedIntegerRange__Group__234865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__0_in_rule__PropertyFillerUnsignedIntegerRange__Group__2__Impl34892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group__3__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group__334923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__0_in_rule__PropertyFillerUnsignedIntegerRange__Group__3__Impl34950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__0__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__034989 = new BitSet(new long[]{0x0000000000000090L,0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__1_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__034992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_0_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__0__Impl35019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__1__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__135050 = new BitSet(new long[]{0x0000000000000090L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__2_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__135053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__1__Impl35081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_2__2__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__235112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Alternatives_2_2_in_rule__PropertyFillerUnsignedIntegerRange__Group_2__2__Impl35139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__0__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__035175 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__1_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__035178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__0__Impl35206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__Group_3__1__Impl_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__135237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRange__RoundedAssignment_3_1_in_rule__PropertyFillerUnsignedIntegerRange__Group_3__1__Impl35264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__0__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__035298 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__1_in_rule__PropertyFillerUnsignedIntegerRandom__Group__035301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_171_in_rule__PropertyFillerUnsignedIntegerRandom__Group__0__Impl35329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__1__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__135360 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__2_in_rule__PropertyFillerUnsignedIntegerRandom__Group__135363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__PropertyFillerUnsignedIntegerRandom__Group__1__Impl35391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__235422 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__3_in_rule__PropertyFillerUnsignedIntegerRandom__Group__235425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl35454 = new BitSet(new long[]{0x0000000000000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__ItemsAssignment_2_in_rule__PropertyFillerUnsignedIntegerRandom__Group__2__Impl35466 = new BitSet(new long[]{0x0000000000000082L});
+        public static final BitSet FOLLOW_rule__PropertyFillerUnsignedIntegerRandom__Group__3__Impl_in_rule__PropertyFillerUnsignedIntegerRandom__Group__335499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__PropertyFillerUnsignedIntegerRandom__Group__3__Impl35527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__0__Impl_in_rule__SignedNumber__Group__035566 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__1_in_rule__SignedNumber__Group__035569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__SignedNumber__Group__0__Impl35598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SignedNumber__Group__1__Impl_in_rule__SignedNumber__Group__135631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__SignedNumber__Group__1__Impl35658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__0__Impl_in_rule__UnsignedNumber__Group__035691 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__1_in_rule__UnsignedNumber__Group__035694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__UnsignedNumber__Group__0__Impl35721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group__1__Impl_in_rule__UnsignedNumber__Group__135750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__0_in_rule__UnsignedNumber__Group__1__Impl35777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__0__Impl_in_rule__UnsignedNumber__Group_1__035812 = new BitSet(new long[]{0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__1_in_rule__UnsignedNumber__Group_1__035815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__UnsignedNumber__Group_1__0__Impl35843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnsignedNumber__Group_1__1__Impl_in_rule__UnsignedNumber__Group_1__135874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__UnsignedNumber__Group_1__1__Impl35901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SINT__Group__0__Impl_in_rule__SINT__Group__035934 = new BitSet(new long[]{0x0000000800000080L});
+        public static final BitSet FOLLOW_rule__SINT__Group__1_in_rule__SINT__Group__035937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__SINT__Group__0__Impl35966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SINT__Group__1__Impl_in_rule__SINT__Group__135999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__SINT__Group__1__Impl36026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0__Impl_in_rule__XAnnotation__Group__036059 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1_in_rule__XAnnotation__Group__036062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1__Impl_in_rule__XAnnotation__Group__136120 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2_in_rule__XAnnotation__Group__136123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_172_in_rule__XAnnotation__Group__1__Impl36151 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2__Impl_in_rule__XAnnotation__Group__236182 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3_in_rule__XAnnotation__Group__236185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__AnnotationTypeAssignment_2_in_rule__XAnnotation__Group__2__Impl36212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3__Impl_in_rule__XAnnotation__Group__336242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0_in_rule__XAnnotation__Group__3__Impl36269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0__Impl_in_rule__XAnnotation__Group_3__036308 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1_in_rule__XAnnotation__Group_3__036311 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets016 {
+        public static final BitSet FOLLOW_139_in_rule__XAnnotation__Group_3__0__Impl36340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1__Impl_in_rule__XAnnotation__Group_3__136372 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2_in_rule__XAnnotation__Group_3__136375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Alternatives_3_1_in_rule__XAnnotation__Group_3__1__Impl36402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2__Impl_in_rule__XAnnotation__Group_3__236433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XAnnotation__Group_3__2__Impl36461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0__Impl_in_rule__XAnnotation__Group_3_1_0__036498 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1_in_rule__XAnnotation__Group_3_1_0__036501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0_in_rule__XAnnotation__Group_3_1_0__0__Impl36528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1__Impl_in_rule__XAnnotation__Group_3_1_0__136558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0_in_rule__XAnnotation__Group_3_1_0__1__Impl36585 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0__Impl_in_rule__XAnnotation__Group_3_1_0_1__036620 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__1_in_rule__XAnnotation__Group_3_1_0_1__036623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XAnnotation__Group_3_1_0_1__0__Impl36651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__1__Impl_in_rule__XAnnotation__Group_3_1_0_1__136682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1_in_rule__XAnnotation__Group_3_1_0_1__1__Impl36709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0__Impl_in_rule__XAnnotationElementValuePair__Group__036743 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1_in_rule__XAnnotationElementValuePair__Group__036746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0_in_rule__XAnnotationElementValuePair__Group__0__Impl36773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1__Impl_in_rule__XAnnotationElementValuePair__Group__136803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ValueAssignment_1_in_rule__XAnnotationElementValuePair__Group__1__Impl36830 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0__036864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0_in_rule__XAnnotationElementValuePair__Group_0__0__Impl36891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__036923 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1_in_rule__XAnnotationElementValuePair__Group_0_0__036926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ElementAssignment_0_0_0_in_rule__XAnnotationElementValuePair__Group_0_0__0__Impl36953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__136983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__XAnnotationElementValuePair__Group_0_0__1__Impl37011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__037046 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51D00000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0__037049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl37076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__137106 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51D00000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0__137109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl37136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__237167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_174_in_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl37195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__037232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl37259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__037291 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__037294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__137352 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__137355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_175_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl37383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__237414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_176_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl37442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__037479 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__037482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl37509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__137539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl37566 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__037601 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__037604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl37632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__137663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl37690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__037724 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1__037727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl37754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__137783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl37810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__037845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__037848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__137906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl37935 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl37947 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__037984 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__037987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl38015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__138046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl38073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0__Impl_in_rule__XAnnotationElementValue__Group_0__038107 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51D00000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1_in_rule__XAnnotationElementValue__Group_0__038110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0_in_rule__XAnnotationElementValue__Group_0__0__Impl38137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1__Impl_in_rule__XAnnotationElementValue__Group_0__138167 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51D00000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2_in_rule__XAnnotationElementValue__Group_0__138170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0_in_rule__XAnnotationElementValue__Group_0__1__Impl38197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2__Impl_in_rule__XAnnotationElementValue__Group_0__238228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_174_in_rule__XAnnotationElementValue__Group_0__2__Impl38256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0__038293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0_in_rule__XAnnotationElementValue__Group_0_0__0__Impl38320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__038352 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1_in_rule__XAnnotationElementValue__Group_0_0_0__038355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__138413 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2_in_rule__XAnnotationElementValue__Group_0_0_0__138416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_175_in_rule__XAnnotationElementValue__Group_0_0_0__1__Impl38444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2__Impl_in_rule__XAnnotationElementValue__Group_0_0_0__238475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_176_in_rule__XAnnotationElementValue__Group_0_0_0__2__Impl38503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1__038540 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1_in_rule__XAnnotationElementValue__Group_0_1__038543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValue__Group_0_1__0__Impl38570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1__138600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0_in_rule__XAnnotationElementValue__Group_0_1__1__Impl38627 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__038662 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1_in_rule__XAnnotationElementValue__Group_0_1_1__038665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XAnnotationElementValue__Group_0_1_1__0__Impl38693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__138724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValue__Group_0_1_1__1__Impl38751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0__Impl_in_rule__XAssignment__Group_0__038785 = new BitSet(new long[]{0x0001E00000000010L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1_in_rule__XAssignment__Group_0__038788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1__Impl_in_rule__XAssignment__Group_0__138846 = new BitSet(new long[]{0x0000000000002000L});
+    }
+
+    protected static class FollowSets017 {
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2_in_rule__XAssignment__Group_0__138849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_0_1_in_rule__XAssignment__Group_0__1__Impl38876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2__Impl_in_rule__XAssignment__Group_0__238906 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3_in_rule__XAssignment__Group_0__238909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XAssignment__Group_0__2__Impl38936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3__Impl_in_rule__XAssignment__Group_0__338965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__ValueAssignment_0_3_in_rule__XAssignment__Group_0__3__Impl38992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0__Impl_in_rule__XAssignment__Group_1__039030 = new BitSet(new long[]{0x000000000C1F0000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1_in_rule__XAssignment__Group_1__039033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_rule__XAssignment__Group_1__0__Impl39060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1__Impl_in_rule__XAssignment__Group_1__139089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0_in_rule__XAssignment__Group_1__1__Impl39116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0__Impl_in_rule__XAssignment__Group_1_1__039151 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1_in_rule__XAssignment__Group_1_1__039154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0_in_rule__XAssignment__Group_1_1__0__Impl39181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1__Impl_in_rule__XAssignment__Group_1_1__139211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__RightOperandAssignment_1_1_1_in_rule__XAssignment__Group_1_1__1__Impl39238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0__Impl_in_rule__XAssignment__Group_1_1_0__039272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__0_in_rule__XAssignment__Group_1_1_0__0__Impl39299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__0__Impl_in_rule__XAssignment__Group_1_1_0_0__039331 = new BitSet(new long[]{0x000000000C1F0000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1_in_rule__XAssignment__Group_1_1_0_0__039334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1__Impl_in_rule__XAssignment__Group_1_1_0_0__139392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_1_1_0_0_1_in_rule__XAssignment__Group_1_1_0_0__1__Impl39419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0__Impl_in_rule__OpMultiAssign__Group_5__039453 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1_in_rule__OpMultiAssign__Group_5__039456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpMultiAssign__Group_5__0__Impl39484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1__Impl_in_rule__OpMultiAssign__Group_5__139515 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2_in_rule__OpMultiAssign__Group_5__139518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpMultiAssign__Group_5__1__Impl39546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2__Impl_in_rule__OpMultiAssign__Group_5__239577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpMultiAssign__Group_5__2__Impl39605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0__Impl_in_rule__OpMultiAssign__Group_6__039642 = new BitSet(new long[]{0x0000000006000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1_in_rule__OpMultiAssign__Group_6__039645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpMultiAssign__Group_6__0__Impl39673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1__Impl_in_rule__OpMultiAssign__Group_6__139704 = new BitSet(new long[]{0x0000000006000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2_in_rule__OpMultiAssign__Group_6__139707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpMultiAssign__Group_6__1__Impl39736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2__Impl_in_rule__OpMultiAssign__Group_6__239769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__OpMultiAssign__Group_6__2__Impl39797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0__Impl_in_rule__XOrExpression__Group__039834 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1_in_rule__XOrExpression__Group__039837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__Group__0__Impl39864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1__Impl_in_rule__XOrExpression__Group__139893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0_in_rule__XOrExpression__Group__1__Impl39920 = new BitSet(new long[]{0x0000000000004002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0__Impl_in_rule__XOrExpression__Group_1__039955 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1_in_rule__XOrExpression__Group_1__039958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0_in_rule__XOrExpression__Group_1__0__Impl39985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1__Impl_in_rule__XOrExpression__Group_1__140015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__RightOperandAssignment_1_1_in_rule__XOrExpression__Group_1__1__Impl40042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0__Impl_in_rule__XOrExpression__Group_1_0__040076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0_in_rule__XOrExpression__Group_1_0__0__Impl40103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0__Impl_in_rule__XOrExpression__Group_1_0_0__040135 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1_in_rule__XOrExpression__Group_1_0_0__040138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1__Impl_in_rule__XOrExpression__Group_1_0_0__140196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__FeatureAssignment_1_0_0_1_in_rule__XOrExpression__Group_1_0_0__1__Impl40223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0__Impl_in_rule__XAndExpression__Group__040257 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1_in_rule__XAndExpression__Group__040260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__Group__0__Impl40287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1__Impl_in_rule__XAndExpression__Group__140316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0_in_rule__XAndExpression__Group__1__Impl40343 = new BitSet(new long[]{0x0000000000008002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0__Impl_in_rule__XAndExpression__Group_1__040378 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1_in_rule__XAndExpression__Group_1__040381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0_in_rule__XAndExpression__Group_1__0__Impl40408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1__Impl_in_rule__XAndExpression__Group_1__140438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__RightOperandAssignment_1_1_in_rule__XAndExpression__Group_1__1__Impl40465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0__Impl_in_rule__XAndExpression__Group_1_0__040499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0_in_rule__XAndExpression__Group_1_0__0__Impl40526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0__Impl_in_rule__XAndExpression__Group_1_0_0__040558 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1_in_rule__XAndExpression__Group_1_0_0__040561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1__Impl_in_rule__XAndExpression__Group_1_0_0__140619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__FeatureAssignment_1_0_0_1_in_rule__XAndExpression__Group_1_0_0__1__Impl40646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0__Impl_in_rule__XEqualityExpression__Group__040680 = new BitSet(new long[]{0x0000000001E00000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1_in_rule__XEqualityExpression__Group__040683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__Group__0__Impl40710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1__Impl_in_rule__XEqualityExpression__Group__140739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0_in_rule__XEqualityExpression__Group__1__Impl40766 = new BitSet(new long[]{0x0000000001E00002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0__Impl_in_rule__XEqualityExpression__Group_1__040801 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1_in_rule__XEqualityExpression__Group_1__040804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0_in_rule__XEqualityExpression__Group_1__0__Impl40831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1__Impl_in_rule__XEqualityExpression__Group_1__140861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__RightOperandAssignment_1_1_in_rule__XEqualityExpression__Group_1__1__Impl40888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0__Impl_in_rule__XEqualityExpression__Group_1_0__040922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0_in_rule__XEqualityExpression__Group_1_0__0__Impl40949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0__Impl_in_rule__XEqualityExpression__Group_1_0_0__040981 = new BitSet(new long[]{0x0000000001E00000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1_in_rule__XEqualityExpression__Group_1_0_0__040984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1__Impl_in_rule__XEqualityExpression__Group_1_0_0__141042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__FeatureAssignment_1_0_0_1_in_rule__XEqualityExpression__Group_1_0_0__1__Impl41069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0__Impl_in_rule__XRelationalExpression__Group__041103 = new BitSet(new long[]{0x000000000E000000L,0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1_in_rule__XRelationalExpression__Group__041106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__Group__0__Impl41133 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1__Impl_in_rule__XRelationalExpression__Group__141162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Alternatives_1_in_rule__XRelationalExpression__Group__1__Impl41189 = new BitSet(new long[]{0x000000000E000002L,0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_0__041224 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1_in_rule__XRelationalExpression__Group_1_0__041227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0_in_rule__XRelationalExpression__Group_1_0__0__Impl41254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1__Impl_in_rule__XRelationalExpression__Group_1_0__141284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__TypeAssignment_1_0_1_in_rule__XRelationalExpression__Group_1_0__1__Impl41311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_0_0__041345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0_in_rule__XRelationalExpression__Group_1_0_0__0__Impl41372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_0_0_0__041404 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
+    }
+
+    protected static class FollowSets018 {
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1_in_rule__XRelationalExpression__Group_1_0_0_0__041407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1__Impl_in_rule__XRelationalExpression__Group_1_0_0_0__141465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_177_in_rule__XRelationalExpression__Group_1_0_0_0__1__Impl41493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0__Impl_in_rule__XRelationalExpression__Group_1_1__041528 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1_in_rule__XRelationalExpression__Group_1_1__041531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0_in_rule__XRelationalExpression__Group_1_1__0__Impl41558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1__Impl_in_rule__XRelationalExpression__Group_1_1__141588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__RightOperandAssignment_1_1_1_in_rule__XRelationalExpression__Group_1_1__1__Impl41615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_1_0__041649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__0_in_rule__XRelationalExpression__Group_1_1_0__0__Impl41676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__0__Impl_in_rule__XRelationalExpression__Group_1_1_0_0__041708 = new BitSet(new long[]{0x000000000E000000L,0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1_in_rule__XRelationalExpression__Group_1_1_0_0__041711 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1__Impl_in_rule__XRelationalExpression__Group_1_1_0_0__141769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1_in_rule__XRelationalExpression__Group_1_1_0_0__1__Impl41796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0__Impl_in_rule__OpCompare__Group_1__041830 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1_in_rule__OpCompare__Group_1__041833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpCompare__Group_1__0__Impl41861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1__Impl_in_rule__OpCompare__Group_1__141892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpCompare__Group_1__1__Impl41920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0__Impl_in_rule__XOtherOperatorExpression__Group__041955 = new BitSet(new long[]{0x00000003FC000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1_in_rule__XOtherOperatorExpression__Group__041958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__Group__0__Impl41985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1__Impl_in_rule__XOtherOperatorExpression__Group__142014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0_in_rule__XOtherOperatorExpression__Group__1__Impl42041 = new BitSet(new long[]{0x00000003FC000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0__Impl_in_rule__XOtherOperatorExpression__Group_1__042076 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1_in_rule__XOtherOperatorExpression__Group_1__042079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0_in_rule__XOtherOperatorExpression__Group_1__0__Impl42106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1__Impl_in_rule__XOtherOperatorExpression__Group_1__142136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__RightOperandAssignment_1_1_in_rule__XOtherOperatorExpression__Group_1__1__Impl42163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0__042197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0_in_rule__XOtherOperatorExpression__Group_1_0__0__Impl42224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0_0__042256 = new BitSet(new long[]{0x00000003FC000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1_in_rule__XOtherOperatorExpression__Group_1_0_0__042259 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1__Impl_in_rule__XOtherOperatorExpression__Group_1_0_0__142317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1_in_rule__XOtherOperatorExpression__Group_1_0_0__1__Impl42344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0__Impl_in_rule__OpOther__Group_2__042378 = new BitSet(new long[]{0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1_in_rule__OpOther__Group_2__042381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_2__0__Impl42409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1__Impl_in_rule__OpOther__Group_2__142440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__OpOther__Group_2__1__Impl42468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0__Impl_in_rule__OpOther__Group_5__042503 = new BitSet(new long[]{0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1_in_rule__OpOther__Group_5__042506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_5__0__Impl42534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1__Impl_in_rule__OpOther__Group_5__142565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_5_1_in_rule__OpOther__Group_5__1__Impl42592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0__Impl_in_rule__OpOther__Group_5_1_0__042626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__0_in_rule__OpOther__Group_5_1_0__0__Impl42653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__0__Impl_in_rule__OpOther__Group_5_1_0_0__042685 = new BitSet(new long[]{0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1_in_rule__OpOther__Group_5_1_0_0__042688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_5_1_0_0__0__Impl42716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1__Impl_in_rule__OpOther__Group_5_1_0_0__142747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__OpOther__Group_5_1_0_0__1__Impl42775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0__Impl_in_rule__OpOther__Group_6__042810 = new BitSet(new long[]{0x0000000088000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1_in_rule__OpOther__Group_6__042813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_6__0__Impl42841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1__Impl_in_rule__OpOther__Group_6__142872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_6_1_in_rule__OpOther__Group_6__1__Impl42899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0__Impl_in_rule__OpOther__Group_6_1_0__042933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__0_in_rule__OpOther__Group_6_1_0__0__Impl42960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__0__Impl_in_rule__OpOther__Group_6_1_0_0__042992 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1_in_rule__OpOther__Group_6_1_0_0__042995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_6_1_0_0__0__Impl43023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1__Impl_in_rule__OpOther__Group_6_1_0_0__143054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__OpOther__Group_6_1_0_0__1__Impl43082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0__Impl_in_rule__XAdditiveExpression__Group__043117 = new BitSet(new long[]{0x0000000C00000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1_in_rule__XAdditiveExpression__Group__043120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_rule__XAdditiveExpression__Group__0__Impl43147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1__Impl_in_rule__XAdditiveExpression__Group__143176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0_in_rule__XAdditiveExpression__Group__1__Impl43203 = new BitSet(new long[]{0x0000000C00000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0__Impl_in_rule__XAdditiveExpression__Group_1__043238 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1_in_rule__XAdditiveExpression__Group_1__043241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0_in_rule__XAdditiveExpression__Group_1__0__Impl43268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1__Impl_in_rule__XAdditiveExpression__Group_1__143298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__RightOperandAssignment_1_1_in_rule__XAdditiveExpression__Group_1__1__Impl43325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0__043359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0_in_rule__XAdditiveExpression__Group_1_0__0__Impl43386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0_0__043418 = new BitSet(new long[]{0x0000000C00000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1_in_rule__XAdditiveExpression__Group_1_0_0__043421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1__Impl_in_rule__XAdditiveExpression__Group_1_0_0__143479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__FeatureAssignment_1_0_0_1_in_rule__XAdditiveExpression__Group_1_0_0__1__Impl43506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0__Impl_in_rule__XMultiplicativeExpression__Group__043540 = new BitSet(new long[]{0x000000F000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1_in_rule__XMultiplicativeExpression__Group__043543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XMultiplicativeExpression__Group__0__Impl43570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1__Impl_in_rule__XMultiplicativeExpression__Group__143599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0_in_rule__XMultiplicativeExpression__Group__1__Impl43626 = new BitSet(new long[]{0x000000F000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0__Impl_in_rule__XMultiplicativeExpression__Group_1__043661 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1_in_rule__XMultiplicativeExpression__Group_1__043664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0_in_rule__XMultiplicativeExpression__Group_1__0__Impl43691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1__Impl_in_rule__XMultiplicativeExpression__Group_1__143721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__RightOperandAssignment_1_1_in_rule__XMultiplicativeExpression__Group_1__1__Impl43748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0__043782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0_in_rule__XMultiplicativeExpression__Group_1_0__0__Impl43809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0_0__043841 = new BitSet(new long[]{0x000000F000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1_in_rule__XMultiplicativeExpression__Group_1_0_0__043844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1__Impl_in_rule__XMultiplicativeExpression__Group_1_0_0__143902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1_in_rule__XMultiplicativeExpression__Group_1_0_0__1__Impl43929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0__Impl_in_rule__XUnaryOperation__Group_0__043963 = new BitSet(new long[]{0x0000010C00000000L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1_in_rule__XUnaryOperation__Group_0__043966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1__Impl_in_rule__XUnaryOperation__Group_0__144024 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2_in_rule__XUnaryOperation__Group_0__144027 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets019 {
+        public static final BitSet FOLLOW_rule__XUnaryOperation__FeatureAssignment_0_1_in_rule__XUnaryOperation__Group_0__1__Impl44054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2__Impl_in_rule__XUnaryOperation__Group_0__244084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__OperandAssignment_0_2_in_rule__XUnaryOperation__Group_0__2__Impl44111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0__Impl_in_rule__XCastedExpression__Group__044147 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1_in_rule__XCastedExpression__Group__044150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_rule__XCastedExpression__Group__0__Impl44177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1__Impl_in_rule__XCastedExpression__Group__144206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0_in_rule__XCastedExpression__Group__1__Impl44233 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0__Impl_in_rule__XCastedExpression__Group_1__044268 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1_in_rule__XCastedExpression__Group_1__044271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0_in_rule__XCastedExpression__Group_1__0__Impl44298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1__Impl_in_rule__XCastedExpression__Group_1__144328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__TypeAssignment_1_1_in_rule__XCastedExpression__Group_1__1__Impl44355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0__Impl_in_rule__XCastedExpression__Group_1_0__044389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0_in_rule__XCastedExpression__Group_1_0__0__Impl44416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0__Impl_in_rule__XCastedExpression__Group_1_0_0__044448 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1_in_rule__XCastedExpression__Group_1_0_0__044451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1__Impl_in_rule__XCastedExpression__Group_1_0_0__144509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_178_in_rule__XCastedExpression__Group_1_0_0__1__Impl44537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0__Impl_in_rule__XPostfixOperation__Group__044572 = new BitSet(new long[]{0x0000060000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1_in_rule__XPostfixOperation__Group__044575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_rule__XPostfixOperation__Group__0__Impl44602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1__Impl_in_rule__XPostfixOperation__Group__144631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0_in_rule__XPostfixOperation__Group__1__Impl44658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0__Impl_in_rule__XPostfixOperation__Group_1__044693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0_in_rule__XPostfixOperation__Group_1__0__Impl44720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0__Impl_in_rule__XPostfixOperation__Group_1_0__044752 = new BitSet(new long[]{0x0000060000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1_in_rule__XPostfixOperation__Group_1_0__044755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1__Impl_in_rule__XPostfixOperation__Group_1_0__144813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__FeatureAssignment_1_0_1_in_rule__XPostfixOperation__Group_1_0__1__Impl44840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0__Impl_in_rule__XMemberFeatureCall__Group__044874 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000180000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1_in_rule__XMemberFeatureCall__Group__044877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_rule__XMemberFeatureCall__Group__0__Impl44904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1__Impl_in_rule__XMemberFeatureCall__Group__144933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_in_rule__XMemberFeatureCall__Group__1__Impl44960 = new BitSet(new long[]{0x0000080000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000180000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0__044995 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1_in_rule__XMemberFeatureCall__Group_1_0__044998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_0__0__Impl45025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0__145055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ValueAssignment_1_0_1_in_rule__XMemberFeatureCall__Group_1_0__1__Impl45082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0_0__045116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__0_in_rule__XMemberFeatureCall__Group_1_0_0__0__Impl45143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__045175 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1_in_rule__XMemberFeatureCall__Group_1_0_0_0__045178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__145236 = new BitSet(new long[]{0x0001E00000000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2_in_rule__XMemberFeatureCall__Group_1_0_0_0__145239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_0_0_0_1_in_rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl45266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__245296 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__3_in_rule__XMemberFeatureCall__Group_1_0_0_0__245299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2_in_rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl45326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl_in_rule__XMemberFeatureCall__Group_1_0_0_0__345356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl45383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1__045420 = new BitSet(new long[]{0x0003E00008000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1_in_rule__XMemberFeatureCall__Group_1_1__045423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0_in_rule__XMemberFeatureCall__Group_1_1__0__Impl45450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1__145480 = new BitSet(new long[]{0x0003E00008000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2_in_rule__XMemberFeatureCall__Group_1_1__145483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1__1__Impl45510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1__245541 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3_in_rule__XMemberFeatureCall__Group_1_1__245544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_1_2_in_rule__XMemberFeatureCall__Group_1_1__2__Impl45571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1__345601 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4_in_rule__XMemberFeatureCall__Group_1_1__345604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0_in_rule__XMemberFeatureCall__Group_1_1__3__Impl45631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4__Impl_in_rule__XMemberFeatureCall__Group_1_1__445662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4_in_rule__XMemberFeatureCall__Group_1_1__4__Impl45689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_0__045730 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_1_0__0__Impl45757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_0_0__045789 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000180000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1_in_rule__XMemberFeatureCall__Group_1_1_0_0__045792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_0_0__145850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_1_0_0_1_in_rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl45877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__045911 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_1__045914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__XMemberFeatureCall__Group_1_1_1__0__Impl45942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__145973 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2_in_rule__XMemberFeatureCall__Group_1_1_1__145976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1_in_rule__XMemberFeatureCall__Group_1_1_1__1__Impl46003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__246033 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3_in_rule__XMemberFeatureCall__Group_1_1_1__246036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__0_in_rule__XMemberFeatureCall__Group_1_1_1__2__Impl46063 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__346094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__XMemberFeatureCall__Group_1_1_1__3__Impl46122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_1_2__046161 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1_in_rule__XMemberFeatureCall__Group_1_1_1_2__046164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl46192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_1_2__146223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1_in_rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl46250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3__046284 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000A00005L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1_in_rule__XMemberFeatureCall__Group_1_1_3__046287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0_in_rule__XMemberFeatureCall__Group_1_1_3__0__Impl46314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_3__146344 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000A00005L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2_in_rule__XMemberFeatureCall__Group_1_1_3__146347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_1_3_1_in_rule__XMemberFeatureCall__Group_1_1_3__1__Impl46374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2__Impl_in_rule__XMemberFeatureCall__Group_1_1_3__246405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XMemberFeatureCall__Group_1_1_3__2__Impl46433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__046470 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__046473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl46500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__146530 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets020 {
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl46557 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__046592 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__046595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl46623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__146654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl46681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0__Impl_in_rule__XSetLiteral__Group__046715 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1_in_rule__XSetLiteral__Group__046718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1__Impl_in_rule__XSetLiteral__Group__146776 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2_in_rule__XSetLiteral__Group__146779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_175_in_rule__XSetLiteral__Group__1__Impl46807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2__Impl_in_rule__XSetLiteral__Group__246838 = new BitSet(new long[]{0x0007E10C080001F0L,0x004C000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3_in_rule__XSetLiteral__Group__246841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XSetLiteral__Group__2__Impl46869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3__Impl_in_rule__XSetLiteral__Group__346900 = new BitSet(new long[]{0x0007E10C080001F0L,0x004C000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4_in_rule__XSetLiteral__Group__346903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0_in_rule__XSetLiteral__Group__3__Impl46930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4__Impl_in_rule__XSetLiteral__Group__446961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__XSetLiteral__Group__4__Impl46989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0__Impl_in_rule__XSetLiteral__Group_3__047030 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1_in_rule__XSetLiteral__Group_3__047033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_0_in_rule__XSetLiteral__Group_3__0__Impl47060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1__Impl_in_rule__XSetLiteral__Group_3__147090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0_in_rule__XSetLiteral__Group_3__1__Impl47117 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0__Impl_in_rule__XSetLiteral__Group_3_1__047152 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1_in_rule__XSetLiteral__Group_3_1__047155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XSetLiteral__Group_3_1__0__Impl47183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1__Impl_in_rule__XSetLiteral__Group_3_1__147214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_1_1_in_rule__XSetLiteral__Group_3_1__1__Impl47241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0__Impl_in_rule__XListLiteral__Group__047275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1_in_rule__XListLiteral__Group__047278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1__Impl_in_rule__XListLiteral__Group__147336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__2_in_rule__XListLiteral__Group__147339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_175_in_rule__XListLiteral__Group__1__Impl47367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__2__Impl_in_rule__XListLiteral__Group__247398 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51D00000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__3_in_rule__XListLiteral__Group__247401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_176_in_rule__XListLiteral__Group__2__Impl47429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__3__Impl_in_rule__XListLiteral__Group__347460 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51D00000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__4_in_rule__XListLiteral__Group__347463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0_in_rule__XListLiteral__Group__3__Impl47490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__4__Impl_in_rule__XListLiteral__Group__447521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_174_in_rule__XListLiteral__Group__4__Impl47549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0__Impl_in_rule__XListLiteral__Group_3__047590 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1_in_rule__XListLiteral__Group_3__047593 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_0_in_rule__XListLiteral__Group_3__0__Impl47620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1__Impl_in_rule__XListLiteral__Group_3__147650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0_in_rule__XListLiteral__Group_3__1__Impl47677 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0__Impl_in_rule__XListLiteral__Group_3_1__047712 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1_in_rule__XListLiteral__Group_3_1__047715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XListLiteral__Group_3_1__0__Impl47743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1__Impl_in_rule__XListLiteral__Group_3_1__147774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_1_1_in_rule__XListLiteral__Group_3_1__1__Impl47801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__0__Impl_in_rule__XClosure__Group__047835 = new BitSet(new long[]{0x0007F10C880001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000E00005L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__1_in_rule__XClosure__Group__047838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0__0_in_rule__XClosure__Group__0__Impl47865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__1__Impl_in_rule__XClosure__Group__147895 = new BitSet(new long[]{0x0007F10C880001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000E00005L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__2_in_rule__XClosure__Group__147898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1__0_in_rule__XClosure__Group__1__Impl47925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__2__Impl_in_rule__XClosure__Group__247956 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__3_in_rule__XClosure__Group__247959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__ExpressionAssignment_2_in_rule__XClosure__Group__2__Impl47986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__3__Impl_in_rule__XClosure__Group__348016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_174_in_rule__XClosure__Group__3__Impl48044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0__0__Impl_in_rule__XClosure__Group_0__048083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0_in_rule__XClosure__Group_0__0__Impl48110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0__Impl_in_rule__XClosure__Group_0_0__048142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1_in_rule__XClosure__Group_0_0__048145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1__Impl_in_rule__XClosure__Group_0_0__148203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_176_in_rule__XClosure__Group_0_0__1__Impl48231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1__0__Impl_in_rule__XClosure__Group_1__048266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0_in_rule__XClosure__Group_1__0__Impl48293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0__Impl_in_rule__XClosure__Group_1_0__048325 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1_in_rule__XClosure__Group_1_0__048328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__0_in_rule__XClosure__Group_1_0__0__Impl48355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1__Impl_in_rule__XClosure__Group_1_0__148386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__ExplicitSyntaxAssignment_1_0_1_in_rule__XClosure__Group_1_0__1__Impl48413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__0__Impl_in_rule__XClosure__Group_1_0_0__048447 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__1_in_rule__XClosure__Group_1_0_0__048450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0_in_rule__XClosure__Group_1_0_0__0__Impl48477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__1__Impl_in_rule__XClosure__Group_1_0_0__148507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__0_in_rule__XClosure__Group_1_0_0__1__Impl48534 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__0__Impl_in_rule__XClosure__Group_1_0_0_1__048569 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__1_in_rule__XClosure__Group_1_0_0_1__048572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XClosure__Group_1_0_0_1__0__Impl48600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__1__Impl_in_rule__XClosure__Group_1_0_0_1__148631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1_in_rule__XClosure__Group_1_0_0_1__1__Impl48658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0__Impl_in_rule__XExpressionInClosure__Group__048692 = new BitSet(new long[]{0x0007F10C880001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000E00005L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1_in_rule__XExpressionInClosure__Group__048695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1__Impl_in_rule__XExpressionInClosure__Group__148753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0_in_rule__XExpressionInClosure__Group__1__Impl48780 = new BitSet(new long[]{0x0007F10C080001F2L,0x0044000000000000L,0xFE51900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0__Impl_in_rule__XExpressionInClosure__Group_1__048815 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1_in_rule__XExpressionInClosure__Group_1__048818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__ExpressionsAssignment_1_0_in_rule__XExpressionInClosure__Group_1__0__Impl48845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1__Impl_in_rule__XExpressionInClosure__Group_1__148875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_179_in_rule__XExpressionInClosure__Group_1__1__Impl48904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0__Impl_in_rule__XShortClosure__Group__048941 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__1_in_rule__XShortClosure__Group__048944 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0_in_rule__XShortClosure__Group__0__Impl48971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__1__Impl_in_rule__XShortClosure__Group__149001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__ExpressionAssignment_1_in_rule__XShortClosure__Group__1__Impl49028 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets021 {
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0__Impl_in_rule__XShortClosure__Group_0__049062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0_in_rule__XShortClosure__Group_0__0__Impl49089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0__Impl_in_rule__XShortClosure__Group_0_0__049121 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1_in_rule__XShortClosure__Group_0_0__049124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1__Impl_in_rule__XShortClosure__Group_0_0__149182 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2_in_rule__XShortClosure__Group_0_0__149185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__0_in_rule__XShortClosure__Group_0_0__1__Impl49212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2__Impl_in_rule__XShortClosure__Group_0_0__249243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2_in_rule__XShortClosure__Group_0_0__2__Impl49270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__0__Impl_in_rule__XShortClosure__Group_0_0_1__049306 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__1_in_rule__XShortClosure__Group_0_0_1__049309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0_in_rule__XShortClosure__Group_0_0_1__0__Impl49336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__1__Impl_in_rule__XShortClosure__Group_0_0_1__149366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__0_in_rule__XShortClosure__Group_0_0_1__1__Impl49393 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__0__Impl_in_rule__XShortClosure__Group_0_0_1_1__049428 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__1_in_rule__XShortClosure__Group_0_0_1_1__049431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XShortClosure__Group_0_0_1_1__0__Impl49459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__1__Impl_in_rule__XShortClosure__Group_0_0_1_1__149490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1_in_rule__XShortClosure__Group_0_0_1_1__1__Impl49517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0__Impl_in_rule__XParenthesizedExpression__Group__049551 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1_in_rule__XParenthesizedExpression__Group__049554 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XParenthesizedExpression__Group__0__Impl49582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1__Impl_in_rule__XParenthesizedExpression__Group__149613 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2_in_rule__XParenthesizedExpression__Group__149616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XParenthesizedExpression__Group__1__Impl49643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2__Impl_in_rule__XParenthesizedExpression__Group__249672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XParenthesizedExpression__Group__2__Impl49700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0__Impl_in_rule__XIfExpression__Group__049737 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__1_in_rule__XIfExpression__Group__049740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__1__Impl_in_rule__XIfExpression__Group__149798 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__2_in_rule__XIfExpression__Group__149801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_180_in_rule__XIfExpression__Group__1__Impl49829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__2__Impl_in_rule__XIfExpression__Group__249860 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__3_in_rule__XIfExpression__Group__249863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XIfExpression__Group__2__Impl49891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__3__Impl_in_rule__XIfExpression__Group__349922 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__4_in_rule__XIfExpression__Group__349925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__IfAssignment_3_in_rule__XIfExpression__Group__3__Impl49952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__4__Impl_in_rule__XIfExpression__Group__449982 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__5_in_rule__XIfExpression__Group__449985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XIfExpression__Group__4__Impl50013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__5__Impl_in_rule__XIfExpression__Group__550044 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__6_in_rule__XIfExpression__Group__550047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__ThenAssignment_5_in_rule__XIfExpression__Group__5__Impl50074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__6__Impl_in_rule__XIfExpression__Group__650104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0_in_rule__XIfExpression__Group__6__Impl50131 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0__Impl_in_rule__XIfExpression__Group_6__050176 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1_in_rule__XIfExpression__Group_6__050179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_181_in_rule__XIfExpression__Group_6__0__Impl50208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1__Impl_in_rule__XIfExpression__Group_6__150240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__ElseAssignment_6_1_in_rule__XIfExpression__Group_6__1__Impl50267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0__Impl_in_rule__XSwitchExpression__Group__050301 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1_in_rule__XSwitchExpression__Group__050304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1__Impl_in_rule__XSwitchExpression__Group__150362 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2_in_rule__XSwitchExpression__Group__150365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_182_in_rule__XSwitchExpression__Group__1__Impl50393 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2__Impl_in_rule__XSwitchExpression__Group__250424 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3_in_rule__XSwitchExpression__Group__250427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Alternatives_2_in_rule__XSwitchExpression__Group__2__Impl50454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3__Impl_in_rule__XSwitchExpression__Group__350484 = new BitSet(new long[]{0x0008000080000010L,0x0008000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4_in_rule__XSwitchExpression__Group__350487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XSwitchExpression__Group__3__Impl50515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4__Impl_in_rule__XSwitchExpression__Group__450546 = new BitSet(new long[]{0x0008000080000010L,0x0008000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5_in_rule__XSwitchExpression__Group__450549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__CasesAssignment_4_in_rule__XSwitchExpression__Group__4__Impl50576 = new BitSet(new long[]{0x0000000080000012L,0x0000000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5__Impl_in_rule__XSwitchExpression__Group__550607 = new BitSet(new long[]{0x0008000080000010L,0x0008000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6_in_rule__XSwitchExpression__Group__550610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0_in_rule__XSwitchExpression__Group__5__Impl50637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6__Impl_in_rule__XSwitchExpression__Group__650668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__XSwitchExpression__Group__6__Impl50696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0__Impl_in_rule__XSwitchExpression__Group_2_0__050741 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1_in_rule__XSwitchExpression__Group_2_0__050744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0__0_in_rule__XSwitchExpression__Group_2_0__0__Impl50771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1__Impl_in_rule__XSwitchExpression__Group_2_0__150801 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2_in_rule__XSwitchExpression__Group_2_0__150804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_0_1_in_rule__XSwitchExpression__Group_2_0__1__Impl50831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2__Impl_in_rule__XSwitchExpression__Group_2_0__250861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XSwitchExpression__Group_2_0__2__Impl50889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0__0__Impl_in_rule__XSwitchExpression__Group_2_0_0__050926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__0_in_rule__XSwitchExpression__Group_2_0_0__0__Impl50953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__0__Impl_in_rule__XSwitchExpression__Group_2_0_0_0__050985 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__1_in_rule__XSwitchExpression__Group_2_0_0_0__050988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XSwitchExpression__Group_2_0_0_0__0__Impl51016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__1__Impl_in_rule__XSwitchExpression__Group_2_0_0_0__151047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__2_in_rule__XSwitchExpression__Group_2_0_0_0__151050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1_in_rule__XSwitchExpression__Group_2_0_0_0__1__Impl51077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__2__Impl_in_rule__XSwitchExpression__Group_2_0_0_0__251107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_183_in_rule__XSwitchExpression__Group_2_0_0_0__2__Impl51135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0__Impl_in_rule__XSwitchExpression__Group_2_1__051172 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1_in_rule__XSwitchExpression__Group_2_1__051175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0__0_in_rule__XSwitchExpression__Group_2_1__0__Impl51202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1__Impl_in_rule__XSwitchExpression__Group_2_1__151233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_1_1_in_rule__XSwitchExpression__Group_2_1__1__Impl51260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0__0__Impl_in_rule__XSwitchExpression__Group_2_1_0__051294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__0_in_rule__XSwitchExpression__Group_2_1_0__0__Impl51321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__0__Impl_in_rule__XSwitchExpression__Group_2_1_0_0__051353 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1_in_rule__XSwitchExpression__Group_2_1_0_0__051356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0_in_rule__XSwitchExpression__Group_2_1_0_0__0__Impl51383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1__Impl_in_rule__XSwitchExpression__Group_2_1_0_0__151413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_183_in_rule__XSwitchExpression__Group_2_1_0_0__1__Impl51441 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets022 {
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0__Impl_in_rule__XSwitchExpression__Group_5__051476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1_in_rule__XSwitchExpression__Group_5__051479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__XSwitchExpression__Group_5__0__Impl51507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1__Impl_in_rule__XSwitchExpression__Group_5__151538 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2_in_rule__XSwitchExpression__Group_5__151541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_183_in_rule__XSwitchExpression__Group_5__1__Impl51569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2__Impl_in_rule__XSwitchExpression__Group_5__251600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__DefaultAssignment_5_2_in_rule__XSwitchExpression__Group_5__2__Impl51627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0__Impl_in_rule__XCasePart__Group__051663 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__1_in_rule__XCasePart__Group__051666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__1__Impl_in_rule__XCasePart__Group__151724 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__2_in_rule__XCasePart__Group__151727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__TypeGuardAssignment_1_in_rule__XCasePart__Group__1__Impl51754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__2__Impl_in_rule__XCasePart__Group__251785 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0180200000000800L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__3_in_rule__XCasePart__Group__251788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0_in_rule__XCasePart__Group__2__Impl51815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__3__Impl_in_rule__XCasePart__Group__351846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Alternatives_3_in_rule__XCasePart__Group__3__Impl51873 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0__Impl_in_rule__XCasePart__Group_2__051911 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1_in_rule__XCasePart__Group_2__051914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_184_in_rule__XCasePart__Group_2__0__Impl51942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1__Impl_in_rule__XCasePart__Group_2__151973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__CaseAssignment_2_1_in_rule__XCasePart__Group_2__1__Impl52000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0__Impl_in_rule__XCasePart__Group_3_0__052034 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1_in_rule__XCasePart__Group_3_0__052037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_183_in_rule__XCasePart__Group_3_0__0__Impl52065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1__Impl_in_rule__XCasePart__Group_3_0__152096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__ThenAssignment_3_0_1_in_rule__XCasePart__Group_3_0__1__Impl52123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0__Impl_in_rule__XForLoopExpression__Group__052157 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1_in_rule__XForLoopExpression__Group__052160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0_in_rule__XForLoopExpression__Group__0__Impl52187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1__Impl_in_rule__XForLoopExpression__Group__152217 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2_in_rule__XForLoopExpression__Group__152220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__ForExpressionAssignment_1_in_rule__XForLoopExpression__Group__1__Impl52247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2__Impl_in_rule__XForLoopExpression__Group__252277 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3_in_rule__XForLoopExpression__Group__252280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XForLoopExpression__Group__2__Impl52308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3__Impl_in_rule__XForLoopExpression__Group__352339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__EachExpressionAssignment_3_in_rule__XForLoopExpression__Group__3__Impl52366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0__Impl_in_rule__XForLoopExpression__Group_0__052404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0_in_rule__XForLoopExpression__Group_0__0__Impl52431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0__Impl_in_rule__XForLoopExpression__Group_0_0__052463 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1_in_rule__XForLoopExpression__Group_0_0__052466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1__Impl_in_rule__XForLoopExpression__Group_0_0__152524 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2_in_rule__XForLoopExpression__Group_0_0__152527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__XForLoopExpression__Group_0_0__1__Impl52555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2__Impl_in_rule__XForLoopExpression__Group_0_0__252586 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3_in_rule__XForLoopExpression__Group_0_0__252589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XForLoopExpression__Group_0_0__2__Impl52617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3__Impl_in_rule__XForLoopExpression__Group_0_0__352648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4_in_rule__XForLoopExpression__Group_0_0__352651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__DeclaredParamAssignment_0_0_3_in_rule__XForLoopExpression__Group_0_0__3__Impl52678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4__Impl_in_rule__XForLoopExpression__Group_0_0__452708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_183_in_rule__XForLoopExpression__Group_0_0__4__Impl52736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0__Impl_in_rule__XBasicForLoopExpression__Group__052777 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1_in_rule__XBasicForLoopExpression__Group__052780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1__Impl_in_rule__XBasicForLoopExpression__Group__152838 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2_in_rule__XBasicForLoopExpression__Group__152841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__XBasicForLoopExpression__Group__1__Impl52869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2__Impl_in_rule__XBasicForLoopExpression__Group__252900 = new BitSet(new long[]{0x0007F10C080001F0L,0x0044000000000000L,0xFE59900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3_in_rule__XBasicForLoopExpression__Group__252903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XBasicForLoopExpression__Group__2__Impl52931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3__Impl_in_rule__XBasicForLoopExpression__Group__352962 = new BitSet(new long[]{0x0007F10C080001F0L,0x0044000000000000L,0xFE59900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4_in_rule__XBasicForLoopExpression__Group__352965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0_in_rule__XBasicForLoopExpression__Group__3__Impl52992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4__Impl_in_rule__XBasicForLoopExpression__Group__453023 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE59900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5_in_rule__XBasicForLoopExpression__Group__453026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_179_in_rule__XBasicForLoopExpression__Group__4__Impl53054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5__Impl_in_rule__XBasicForLoopExpression__Group__553085 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE59900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6_in_rule__XBasicForLoopExpression__Group__553088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__ExpressionAssignment_5_in_rule__XBasicForLoopExpression__Group__5__Impl53115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6__Impl_in_rule__XBasicForLoopExpression__Group__653146 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7_in_rule__XBasicForLoopExpression__Group__653149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_179_in_rule__XBasicForLoopExpression__Group__6__Impl53177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7__Impl_in_rule__XBasicForLoopExpression__Group__753208 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8_in_rule__XBasicForLoopExpression__Group__753211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0_in_rule__XBasicForLoopExpression__Group__7__Impl53238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8__Impl_in_rule__XBasicForLoopExpression__Group__853269 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9_in_rule__XBasicForLoopExpression__Group__853272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XBasicForLoopExpression__Group__8__Impl53300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9__Impl_in_rule__XBasicForLoopExpression__Group__953331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__EachExpressionAssignment_9_in_rule__XBasicForLoopExpression__Group__9__Impl53358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0__Impl_in_rule__XBasicForLoopExpression__Group_3__053408 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1_in_rule__XBasicForLoopExpression__Group_3__053411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0_in_rule__XBasicForLoopExpression__Group_3__0__Impl53438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1__Impl_in_rule__XBasicForLoopExpression__Group_3__153468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0_in_rule__XBasicForLoopExpression__Group_3__1__Impl53495 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0__Impl_in_rule__XBasicForLoopExpression__Group_3_1__053530 = new BitSet(new long[]{0x0007F10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1_in_rule__XBasicForLoopExpression__Group_3_1__053533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XBasicForLoopExpression__Group_3_1__0__Impl53561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1__Impl_in_rule__XBasicForLoopExpression__Group_3_1__153592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1_in_rule__XBasicForLoopExpression__Group_3_1__1__Impl53619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0__Impl_in_rule__XBasicForLoopExpression__Group_7__053653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1_in_rule__XBasicForLoopExpression__Group_7__053656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0_in_rule__XBasicForLoopExpression__Group_7__0__Impl53683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1__Impl_in_rule__XBasicForLoopExpression__Group_7__153713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0_in_rule__XBasicForLoopExpression__Group_7__1__Impl53740 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0__Impl_in_rule__XBasicForLoopExpression__Group_7_1__053775 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1_in_rule__XBasicForLoopExpression__Group_7_1__053778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XBasicForLoopExpression__Group_7_1__0__Impl53806 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets023 {
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1__Impl_in_rule__XBasicForLoopExpression__Group_7_1__153837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1_in_rule__XBasicForLoopExpression__Group_7_1__1__Impl53864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0__Impl_in_rule__XWhileExpression__Group__053898 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1_in_rule__XWhileExpression__Group__053901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1__Impl_in_rule__XWhileExpression__Group__153959 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2_in_rule__XWhileExpression__Group__153962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_185_in_rule__XWhileExpression__Group__1__Impl53990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2__Impl_in_rule__XWhileExpression__Group__254021 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3_in_rule__XWhileExpression__Group__254024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XWhileExpression__Group__2__Impl54052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3__Impl_in_rule__XWhileExpression__Group__354083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4_in_rule__XWhileExpression__Group__354086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__PredicateAssignment_3_in_rule__XWhileExpression__Group__3__Impl54113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4__Impl_in_rule__XWhileExpression__Group__454143 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5_in_rule__XWhileExpression__Group__454146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XWhileExpression__Group__4__Impl54174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5__Impl_in_rule__XWhileExpression__Group__554205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__BodyAssignment_5_in_rule__XWhileExpression__Group__5__Impl54232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0__Impl_in_rule__XDoWhileExpression__Group__054274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1_in_rule__XDoWhileExpression__Group__054277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1__Impl_in_rule__XDoWhileExpression__Group__154335 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2_in_rule__XDoWhileExpression__Group__154338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_186_in_rule__XDoWhileExpression__Group__1__Impl54366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2__Impl_in_rule__XDoWhileExpression__Group__254397 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3_in_rule__XDoWhileExpression__Group__254400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__BodyAssignment_2_in_rule__XDoWhileExpression__Group__2__Impl54427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3__Impl_in_rule__XDoWhileExpression__Group__354457 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4_in_rule__XDoWhileExpression__Group__354460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_185_in_rule__XDoWhileExpression__Group__3__Impl54488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4__Impl_in_rule__XDoWhileExpression__Group__454519 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5_in_rule__XDoWhileExpression__Group__454522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XDoWhileExpression__Group__4__Impl54550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5__Impl_in_rule__XDoWhileExpression__Group__554581 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6_in_rule__XDoWhileExpression__Group__554584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__PredicateAssignment_5_in_rule__XDoWhileExpression__Group__5__Impl54611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6__Impl_in_rule__XDoWhileExpression__Group__654641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XDoWhileExpression__Group__6__Impl54669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0__Impl_in_rule__XBlockExpression__Group__054714 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1_in_rule__XBlockExpression__Group__054717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1__Impl_in_rule__XBlockExpression__Group__154775 = new BitSet(new long[]{0x0007F10C080001F0L,0x004C000000000000L,0xFE51900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2_in_rule__XBlockExpression__Group__154778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XBlockExpression__Group__1__Impl54806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2__Impl_in_rule__XBlockExpression__Group__254837 = new BitSet(new long[]{0x0007F10C080001F0L,0x004C000000000000L,0xFE51900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3_in_rule__XBlockExpression__Group__254840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0_in_rule__XBlockExpression__Group__2__Impl54867 = new BitSet(new long[]{0x0007F10C080001F2L,0x0044000000000000L,0xFE51900000000800L,0x0000000000C00005L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3__Impl_in_rule__XBlockExpression__Group__354898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__XBlockExpression__Group__3__Impl54926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0__Impl_in_rule__XBlockExpression__Group_2__054965 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__1_in_rule__XBlockExpression__Group_2__054968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__ExpressionsAssignment_2_0_in_rule__XBlockExpression__Group_2__0__Impl54995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__1__Impl_in_rule__XBlockExpression__Group_2__155025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_179_in_rule__XBlockExpression__Group_2__1__Impl55054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0__Impl_in_rule__XVariableDeclaration__Group__055091 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__1_in_rule__XVariableDeclaration__Group__055094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__1__Impl_in_rule__XVariableDeclaration__Group__155152 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__2_in_rule__XVariableDeclaration__Group__155155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Alternatives_1_in_rule__XVariableDeclaration__Group__1__Impl55182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__2__Impl_in_rule__XVariableDeclaration__Group__255212 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__3_in_rule__XVariableDeclaration__Group__255215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Alternatives_2_in_rule__XVariableDeclaration__Group__2__Impl55242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__3__Impl_in_rule__XVariableDeclaration__Group__355272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__0_in_rule__XVariableDeclaration__Group__3__Impl55299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0__Impl_in_rule__XVariableDeclaration__Group_2_0__055338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__0_in_rule__XVariableDeclaration__Group_2_0__0__Impl55365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__0__Impl_in_rule__XVariableDeclaration__Group_2_0_0__055397 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__1_in_rule__XVariableDeclaration__Group_2_0_0__055400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__TypeAssignment_2_0_0_0_in_rule__XVariableDeclaration__Group_2_0_0__0__Impl55427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0_0__1__Impl_in_rule__XVariableDeclaration__Group_2_0_0__155457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_0_0_1_in_rule__XVariableDeclaration__Group_2_0_0__1__Impl55484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__0__Impl_in_rule__XVariableDeclaration__Group_3__055518 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__1_in_rule__XVariableDeclaration__Group_3__055521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__XVariableDeclaration__Group_3__0__Impl55549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_3__1__Impl_in_rule__XVariableDeclaration__Group_3__155580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__RightAssignment_3_1_in_rule__XVariableDeclaration__Group_3__1__Impl55607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0__Impl_in_rule__JvmFormalParameter__Group__055641 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__1_in_rule__JvmFormalParameter__Group__055644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__ParameterTypeAssignment_0_in_rule__JvmFormalParameter__Group__0__Impl55671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__1__Impl_in_rule__JvmFormalParameter__Group__155702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__NameAssignment_1_in_rule__JvmFormalParameter__Group__1__Impl55729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0__Impl_in_rule__FullJvmFormalParameter__Group__055763 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__1_in_rule__FullJvmFormalParameter__Group__055766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__ParameterTypeAssignment_0_in_rule__FullJvmFormalParameter__Group__0__Impl55793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__1__Impl_in_rule__FullJvmFormalParameter__Group__155823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__NameAssignment_1_in_rule__FullJvmFormalParameter__Group__1__Impl55850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0__Impl_in_rule__XFeatureCall__Group__055884 = new BitSet(new long[]{0x0003E00008000010L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__1_in_rule__XFeatureCall__Group__055887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__1__Impl_in_rule__XFeatureCall__Group__155945 = new BitSet(new long[]{0x0003E00008000010L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__2_in_rule__XFeatureCall__Group__155948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__0_in_rule__XFeatureCall__Group__1__Impl55975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__2__Impl_in_rule__XFeatureCall__Group__256006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__3_in_rule__XFeatureCall__Group__256009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureAssignment_2_in_rule__XFeatureCall__Group__2__Impl56036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__3__Impl_in_rule__XFeatureCall__Group__356066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__4_in_rule__XFeatureCall__Group__356069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__0_in_rule__XFeatureCall__Group__3__Impl56096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__4__Impl_in_rule__XFeatureCall__Group__456127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_4_in_rule__XFeatureCall__Group__4__Impl56154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__0__Impl_in_rule__XFeatureCall__Group_1__056195 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__1_in_rule__XFeatureCall__Group_1__056198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__XFeatureCall__Group_1__0__Impl56226 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets024 {
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__1__Impl_in_rule__XFeatureCall__Group_1__156257 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__2_in_rule__XFeatureCall__Group_1__156260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__TypeArgumentsAssignment_1_1_in_rule__XFeatureCall__Group_1__1__Impl56287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__2__Impl_in_rule__XFeatureCall__Group_1__256317 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__3_in_rule__XFeatureCall__Group_1__256320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__0_in_rule__XFeatureCall__Group_1__2__Impl56347 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1__3__Impl_in_rule__XFeatureCall__Group_1__356378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__XFeatureCall__Group_1__3__Impl56406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__0__Impl_in_rule__XFeatureCall__Group_1_2__056445 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__1_in_rule__XFeatureCall__Group_1_2__056448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XFeatureCall__Group_1_2__0__Impl56476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_1_2__1__Impl_in_rule__XFeatureCall__Group_1_2__156507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__TypeArgumentsAssignment_1_2_1_in_rule__XFeatureCall__Group_1_2__1__Impl56534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__0__Impl_in_rule__XFeatureCall__Group_3__056568 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000A00005L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__1_in_rule__XFeatureCall__Group_3__056571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__ExplicitOperationCallAssignment_3_0_in_rule__XFeatureCall__Group_3__0__Impl56598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__1__Impl_in_rule__XFeatureCall__Group_3__156628 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000A00005L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__2_in_rule__XFeatureCall__Group_3__156631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Alternatives_3_1_in_rule__XFeatureCall__Group_3__1__Impl56658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3__2__Impl_in_rule__XFeatureCall__Group_3__256689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XFeatureCall__Group_3__2__Impl56717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0__Impl_in_rule__XFeatureCall__Group_3_1_1__056754 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__1_in_rule__XFeatureCall__Group_3_1_1__056757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0_in_rule__XFeatureCall__Group_3_1_1__0__Impl56784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__1__Impl_in_rule__XFeatureCall__Group_3_1_1__156814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__0_in_rule__XFeatureCall__Group_3_1_1__1__Impl56841 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__0__Impl_in_rule__XFeatureCall__Group_3_1_1_1__056876 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__1_in_rule__XFeatureCall__Group_3_1_1_1__056879 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XFeatureCall__Group_3_1_1_1__0__Impl56907 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1_1__1__Impl_in_rule__XFeatureCall__Group_3_1_1_1__156938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1_in_rule__XFeatureCall__Group_3_1_1_1__1__Impl56965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0__Impl_in_rule__XConstructorCall__Group__056999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__1_in_rule__XConstructorCall__Group__057002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__1__Impl_in_rule__XConstructorCall__Group__157060 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__2_in_rule__XConstructorCall__Group__157063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_187_in_rule__XConstructorCall__Group__1__Impl57091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__2__Impl_in_rule__XConstructorCall__Group__257122 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__3_in_rule__XConstructorCall__Group__257125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ConstructorAssignment_2_in_rule__XConstructorCall__Group__2__Impl57152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__3__Impl_in_rule__XConstructorCall__Group__357182 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__4_in_rule__XConstructorCall__Group__357185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__0_in_rule__XConstructorCall__Group__3__Impl57212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__4__Impl_in_rule__XConstructorCall__Group__457243 = new BitSet(new long[]{0x0000000008000000L,0x0000000000000000L,0x0001000000000800L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__5_in_rule__XConstructorCall__Group__457246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__0_in_rule__XConstructorCall__Group__4__Impl57273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__5__Impl_in_rule__XConstructorCall__Group__557304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_5_in_rule__XConstructorCall__Group__5__Impl57331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__0__Impl_in_rule__XConstructorCall__Group_3__057374 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__1_in_rule__XConstructorCall__Group_3__057377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__XConstructorCall__Group_3__0__Impl57406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__1__Impl_in_rule__XConstructorCall__Group_3__157438 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__2_in_rule__XConstructorCall__Group_3__157441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__TypeArgumentsAssignment_3_1_in_rule__XConstructorCall__Group_3__1__Impl57468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__2__Impl_in_rule__XConstructorCall__Group_3__257498 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__3_in_rule__XConstructorCall__Group_3__257501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__0_in_rule__XConstructorCall__Group_3__2__Impl57528 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3__3__Impl_in_rule__XConstructorCall__Group_3__357559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__XConstructorCall__Group_3__3__Impl57587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__0__Impl_in_rule__XConstructorCall__Group_3_2__057626 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__1_in_rule__XConstructorCall__Group_3_2__057629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XConstructorCall__Group_3_2__0__Impl57657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_3_2__1__Impl_in_rule__XConstructorCall__Group_3_2__157688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__TypeArgumentsAssignment_3_2_1_in_rule__XConstructorCall__Group_3_2__1__Impl57715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__0__Impl_in_rule__XConstructorCall__Group_4__057749 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000A00005L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__1_in_rule__XConstructorCall__Group_4__057752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0_in_rule__XConstructorCall__Group_4__0__Impl57779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__1__Impl_in_rule__XConstructorCall__Group_4__157809 = new BitSet(new long[]{0x0007E10C880001F0L,0x0044000000000000L,0xFE51900000001800L,0x0000000000A00005L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__2_in_rule__XConstructorCall__Group_4__157812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Alternatives_4_1_in_rule__XConstructorCall__Group_4__1__Impl57839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4__2__Impl_in_rule__XConstructorCall__Group_4__257870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XConstructorCall__Group_4__2__Impl57898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0__Impl_in_rule__XConstructorCall__Group_4_1_1__057935 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__1_in_rule__XConstructorCall__Group_4_1_1__057938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_1_0_in_rule__XConstructorCall__Group_4_1_1__0__Impl57965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__1__Impl_in_rule__XConstructorCall__Group_4_1_1__157995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__0_in_rule__XConstructorCall__Group_4_1_1__1__Impl58022 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__0__Impl_in_rule__XConstructorCall__Group_4_1_1_1__058057 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__1_in_rule__XConstructorCall__Group_4_1_1_1__058060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XConstructorCall__Group_4_1_1_1__0__Impl58088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1_1__1__Impl_in_rule__XConstructorCall__Group_4_1_1_1__158119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1_in_rule__XConstructorCall__Group_4_1_1_1__1__Impl58146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0__Impl_in_rule__XBooleanLiteral__Group__058180 = new BitSet(new long[]{0x0004000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__1_in_rule__XBooleanLiteral__Group__058183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__1__Impl_in_rule__XBooleanLiteral__Group__158241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Alternatives_1_in_rule__XBooleanLiteral__Group__1__Impl58268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0__Impl_in_rule__XNullLiteral__Group__058302 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__1_in_rule__XNullLiteral__Group__058305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__1__Impl_in_rule__XNullLiteral__Group__158363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_188_in_rule__XNullLiteral__Group__1__Impl58391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0__Impl_in_rule__XNumberLiteral__Group__058426 = new BitSet(new long[]{0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__1_in_rule__XNumberLiteral__Group__058429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__1__Impl_in_rule__XNumberLiteral__Group__158487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__ValueAssignment_1_in_rule__XNumberLiteral__Group__1__Impl58514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0__Impl_in_rule__XStringLiteral__Group__058548 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__1_in_rule__XStringLiteral__Group__058551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__1__Impl_in_rule__XStringLiteral__Group__158609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__ValueAssignment_1_in_rule__XStringLiteral__Group__1__Impl58636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0__Impl_in_rule__XTypeLiteral__Group__058670 = new BitSet(new long[]{0x00040000000001E0L,0x0000000000000000L,0x3001800000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__1_in_rule__XTypeLiteral__Group__058673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__1__Impl_in_rule__XTypeLiteral__Group__158731 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+    }
+
+    protected static class FollowSets025 {
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__2_in_rule__XTypeLiteral__Group__158734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_189_in_rule__XTypeLiteral__Group__1__Impl58762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__2__Impl_in_rule__XTypeLiteral__Group__258793 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__3_in_rule__XTypeLiteral__Group__258796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XTypeLiteral__Group__2__Impl58824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__3__Impl_in_rule__XTypeLiteral__Group__358855 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000001000L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__4_in_rule__XTypeLiteral__Group__358858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__TypeAssignment_3_in_rule__XTypeLiteral__Group__3__Impl58885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__4__Impl_in_rule__XTypeLiteral__Group__458915 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000001000L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__5_in_rule__XTypeLiteral__Group__458918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__ArrayDimensionsAssignment_4_in_rule__XTypeLiteral__Group__4__Impl58945 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__5__Impl_in_rule__XTypeLiteral__Group__558976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XTypeLiteral__Group__5__Impl59004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0__Impl_in_rule__XThrowExpression__Group__059047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__1_in_rule__XThrowExpression__Group__059050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__1__Impl_in_rule__XThrowExpression__Group__159108 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__2_in_rule__XThrowExpression__Group__159111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_190_in_rule__XThrowExpression__Group__1__Impl59139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__2__Impl_in_rule__XThrowExpression__Group__259170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__ExpressionAssignment_2_in_rule__XThrowExpression__Group__2__Impl59197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0__Impl_in_rule__XReturnExpression__Group__059233 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__1_in_rule__XReturnExpression__Group__059236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__1__Impl_in_rule__XReturnExpression__Group__159294 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__2_in_rule__XReturnExpression__Group__159297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_191_in_rule__XReturnExpression__Group__1__Impl59325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__2__Impl_in_rule__XReturnExpression__Group__259356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__ExpressionAssignment_2_in_rule__XReturnExpression__Group__2__Impl59383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0__Impl_in_rule__XTryCatchFinallyExpression__Group__059420 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__1_in_rule__XTryCatchFinallyExpression__Group__059423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__1__Impl_in_rule__XTryCatchFinallyExpression__Group__159481 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__2_in_rule__XTryCatchFinallyExpression__Group__159484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_192_in_rule__XTryCatchFinallyExpression__Group__1__Impl59512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__2__Impl_in_rule__XTryCatchFinallyExpression__Group__259543 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x000000000000000AL});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__3_in_rule__XTryCatchFinallyExpression__Group__259546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__ExpressionAssignment_2_in_rule__XTryCatchFinallyExpression__Group__2__Impl59573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__3__Impl_in_rule__XTryCatchFinallyExpression__Group__359603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Alternatives_3_in_rule__XTryCatchFinallyExpression__Group__3__Impl59630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0__059668 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__1_in_rule__XTryCatchFinallyExpression__Group_3_0__059671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0_in_rule__XTryCatchFinallyExpression__Group_3_0__0__Impl59700 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0_in_rule__XTryCatchFinallyExpression__Group_3_0__0__Impl59712 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__1__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0__159745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__0_in_rule__XTryCatchFinallyExpression__Group_3_0__1__Impl59772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0_1__059807 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__1_in_rule__XTryCatchFinallyExpression__Group_3_0_1__059810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_193_in_rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl59839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl_in_rule__XTryCatchFinallyExpression__Group_3_0_1__159871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1_in_rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl59898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0__Impl_in_rule__XTryCatchFinallyExpression__Group_3_1__059932 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__1_in_rule__XTryCatchFinallyExpression__Group_3_1__059935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_193_in_rule__XTryCatchFinallyExpression__Group_3_1__0__Impl59963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__1__Impl_in_rule__XTryCatchFinallyExpression__Group_3_1__159994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1_in_rule__XTryCatchFinallyExpression__Group_3_1__1__Impl60021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0__Impl_in_rule__XSynchronizedExpression__Group__060055 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__1_in_rule__XSynchronizedExpression__Group__060058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0__0_in_rule__XSynchronizedExpression__Group__0__Impl60085 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__1__Impl_in_rule__XSynchronizedExpression__Group__160115 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__2_in_rule__XSynchronizedExpression__Group__160118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__ParamAssignment_1_in_rule__XSynchronizedExpression__Group__1__Impl60145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__2__Impl_in_rule__XSynchronizedExpression__Group__260175 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__3_in_rule__XSynchronizedExpression__Group__260178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XSynchronizedExpression__Group__2__Impl60206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__3__Impl_in_rule__XSynchronizedExpression__Group__360237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__ExpressionAssignment_3_in_rule__XSynchronizedExpression__Group__3__Impl60264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0__0__Impl_in_rule__XSynchronizedExpression__Group_0__060302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__0_in_rule__XSynchronizedExpression__Group_0__0__Impl60329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__0__Impl_in_rule__XSynchronizedExpression__Group_0_0__060361 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__1_in_rule__XSynchronizedExpression__Group_0_0__060364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__1__Impl_in_rule__XSynchronizedExpression__Group_0_0__160422 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__2_in_rule__XSynchronizedExpression__Group_0_0__160425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_194_in_rule__XSynchronizedExpression__Group_0_0__1__Impl60453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group_0_0__2__Impl_in_rule__XSynchronizedExpression__Group_0_0__260484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XSynchronizedExpression__Group_0_0__2__Impl60512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__0__Impl_in_rule__XCatchClause__Group__060549 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__1_in_rule__XCatchClause__Group__060552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_195_in_rule__XCatchClause__Group__0__Impl60581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__1__Impl_in_rule__XCatchClause__Group__160613 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__2_in_rule__XCatchClause__Group__160616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XCatchClause__Group__1__Impl60644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__2__Impl_in_rule__XCatchClause__Group__260675 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__3_in_rule__XCatchClause__Group__260678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__DeclaredParamAssignment_2_in_rule__XCatchClause__Group__2__Impl60705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__3__Impl_in_rule__XCatchClause__Group__360735 = new BitSet(new long[]{0x0007E10C080001F0L,0x0044000000000000L,0xFE51900000000800L,0x0000000000800005L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__4_in_rule__XCatchClause__Group__360738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XCatchClause__Group__3__Impl60766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__4__Impl_in_rule__XCatchClause__Group__460797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__ExpressionAssignment_4_in_rule__XCatchClause__Group__4__Impl60824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__0__Impl_in_rule__Number__Group_1__060864 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__1_in_rule__Number__Group_1__060867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_1_0_in_rule__Number__Group_1__0__Impl60894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__1__Impl_in_rule__Number__Group_1__160924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1_1__0_in_rule__Number__Group_1__1__Impl60951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1_1__0__Impl_in_rule__Number__Group_1_1__060986 = new BitSet(new long[]{0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__Number__Group_1_1__1_in_rule__Number__Group_1_1__060989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__Number__Group_1_1__0__Impl61017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1_1__1__Impl_in_rule__Number__Group_1_1__161048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_1_1_1_in_rule__Number__Group_1_1__1__Impl61075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0__Impl_in_rule__JvmTypeReference__Group_0__061110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__1_in_rule__JvmTypeReference__Group_0__061113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_rule__JvmTypeReference__Group_0__0__Impl61140 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets026 {
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__1__Impl_in_rule__JvmTypeReference__Group_0__161169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1__0_in_rule__JvmTypeReference__Group_0__1__Impl61196 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1__0__Impl_in_rule__JvmTypeReference__Group_0_1__061231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__0_in_rule__JvmTypeReference__Group_0_1__0__Impl61258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__0__Impl_in_rule__JvmTypeReference__Group_0_1_0__061290 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__1_in_rule__JvmTypeReference__Group_0_1_0__061293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0_1_0__1__Impl_in_rule__JvmTypeReference__Group_0_1_0__161351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_rule__JvmTypeReference__Group_0_1_0__1__Impl61378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0__Impl_in_rule__ArrayBrackets__Group__061411 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__1_in_rule__ArrayBrackets__Group__061414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_176_in_rule__ArrayBrackets__Group__0__Impl61442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__1__Impl_in_rule__ArrayBrackets__Group__161473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_174_in_rule__ArrayBrackets__Group__1__Impl61501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0__Impl_in_rule__XFunctionTypeRef__Group__061536 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__1_in_rule__XFunctionTypeRef__Group__061539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__0_in_rule__XFunctionTypeRef__Group__0__Impl61566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__1__Impl_in_rule__XFunctionTypeRef__Group__161597 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__2_in_rule__XFunctionTypeRef__Group__161600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__XFunctionTypeRef__Group__1__Impl61628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__2__Impl_in_rule__XFunctionTypeRef__Group__261659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__ReturnTypeAssignment_2_in_rule__XFunctionTypeRef__Group__2__Impl61686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__0__Impl_in_rule__XFunctionTypeRef__Group_0__061722 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000001800L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__1_in_rule__XFunctionTypeRef__Group_0__061725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__XFunctionTypeRef__Group_0__0__Impl61753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__1__Impl_in_rule__XFunctionTypeRef__Group_0__161784 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000001800L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__2_in_rule__XFunctionTypeRef__Group_0__161787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__0_in_rule__XFunctionTypeRef__Group_0__1__Impl61814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0__2__Impl_in_rule__XFunctionTypeRef__Group_0__261845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__XFunctionTypeRef__Group_0__2__Impl61873 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__0__Impl_in_rule__XFunctionTypeRef__Group_0_1__061910 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__1_in_rule__XFunctionTypeRef__Group_0_1__061913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0_in_rule__XFunctionTypeRef__Group_0_1__0__Impl61940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1__1__Impl_in_rule__XFunctionTypeRef__Group_0_1__161970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__0_in_rule__XFunctionTypeRef__Group_0_1__1__Impl61997 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__0__Impl_in_rule__XFunctionTypeRef__Group_0_1_1__062032 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__1_in_rule__XFunctionTypeRef__Group_0_1_1__062035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__XFunctionTypeRef__Group_0_1_1__0__Impl62063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group_0_1_1__1__Impl_in_rule__XFunctionTypeRef__Group_0_1_1__162094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1_in_rule__XFunctionTypeRef__Group_0_1_1__1__Impl62121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0__Impl_in_rule__JvmParameterizedTypeReference__Group__062155 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__1_in_rule__JvmParameterizedTypeReference__Group__062158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__TypeAssignment_0_in_rule__JvmParameterizedTypeReference__Group__0__Impl62185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__1__Impl_in_rule__JvmParameterizedTypeReference__Group__162215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__0_in_rule__JvmParameterizedTypeReference__Group__1__Impl62242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1__062277 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__1_in_rule__JvmParameterizedTypeReference__Group_1__062280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__JvmParameterizedTypeReference__Group_1__0__Impl62309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1__162341 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__2_in_rule__JvmParameterizedTypeReference__Group_1__162344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1_in_rule__JvmParameterizedTypeReference__Group_1__1__Impl62371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__2__Impl_in_rule__JvmParameterizedTypeReference__Group_1__262401 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__3_in_rule__JvmParameterizedTypeReference__Group_1__262404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__0_in_rule__JvmParameterizedTypeReference__Group_1__2__Impl62431 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__3__Impl_in_rule__JvmParameterizedTypeReference__Group_1__362462 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__4_in_rule__JvmParameterizedTypeReference__Group_1__362465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__JvmParameterizedTypeReference__Group_1__3__Impl62493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1__4__Impl_in_rule__JvmParameterizedTypeReference__Group_1__462524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__0_in_rule__JvmParameterizedTypeReference__Group_1__4__Impl62551 = new BitSet(new long[]{0x0000080000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_2__062592 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__1_in_rule__JvmParameterizedTypeReference__Group_1_2__062595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__JvmParameterizedTypeReference__Group_1_2__0__Impl62623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_2__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_2__162654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1_in_rule__JvmParameterizedTypeReference__Group_1_2__1__Impl62681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4__062715 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__1_in_rule__JvmParameterizedTypeReference__Group_1_4__062718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0__0_in_rule__JvmParameterizedTypeReference__Group_1_4__0__Impl62745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4__162775 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__2_in_rule__JvmParameterizedTypeReference__Group_1_4__162778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1_in_rule__JvmParameterizedTypeReference__Group_1_4__1__Impl62805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4__2__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4__262835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__0_in_rule__JvmParameterizedTypeReference__Group_1_4__2__Impl62862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_0__062899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__0_in_rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl62926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__062958 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__1_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__062961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__163019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl63047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__063082 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__1_in_rule__JvmParameterizedTypeReference__Group_1_4_2__063085 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl63114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__163146 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__2_in_rule__JvmParameterizedTypeReference__Group_1_4_2__163149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1_in_rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl63176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__263206 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__3_in_rule__JvmParameterizedTypeReference__Group_1_4_2__263209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__0_in_rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl63236 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2__363267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl63295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__063334 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__1_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__063337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_173_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl63365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__163396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1_in_rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl63423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0__Impl_in_rule__JvmWildcardTypeReference__Group__063457 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__1_in_rule__JvmWildcardTypeReference__Group__063460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__1__Impl_in_rule__JvmWildcardTypeReference__Group__163518 = new BitSet(new long[]{0x0002200000000000L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__2_in_rule__JvmWildcardTypeReference__Group__163521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_196_in_rule__JvmWildcardTypeReference__Group__1__Impl63549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__2__Impl_in_rule__JvmWildcardTypeReference__Group__263580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Alternatives_2_in_rule__JvmWildcardTypeReference__Group__2__Impl63607 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets027 {
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0__Impl_in_rule__JvmWildcardTypeReference__Group_2_0__063644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__1_in_rule__JvmWildcardTypeReference__Group_2_0__063647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0_in_rule__JvmWildcardTypeReference__Group_2_0__0__Impl63674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__1__Impl_in_rule__JvmWildcardTypeReference__Group_2_0__163704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1_in_rule__JvmWildcardTypeReference__Group_2_0__1__Impl63731 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0__Impl_in_rule__JvmWildcardTypeReference__Group_2_1__063766 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__1_in_rule__JvmWildcardTypeReference__Group_2_1__063769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0_in_rule__JvmWildcardTypeReference__Group_2_1__0__Impl63796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__1__Impl_in_rule__JvmWildcardTypeReference__Group_2_1__163826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1_in_rule__JvmWildcardTypeReference__Group_2_1__1__Impl63853 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0__Impl_in_rule__JvmUpperBound__Group__063888 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__1_in_rule__JvmUpperBound__Group__063891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__JvmUpperBound__Group__0__Impl63919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__1__Impl_in_rule__JvmUpperBound__Group__163950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__TypeReferenceAssignment_1_in_rule__JvmUpperBound__Group__1__Impl63977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0__Impl_in_rule__JvmUpperBoundAnded__Group__064011 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__1_in_rule__JvmUpperBoundAnded__Group__064014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_197_in_rule__JvmUpperBoundAnded__Group__0__Impl64042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__1__Impl_in_rule__JvmUpperBoundAnded__Group__164073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__TypeReferenceAssignment_1_in_rule__JvmUpperBoundAnded__Group__1__Impl64100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0__Impl_in_rule__JvmLowerBound__Group__064134 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__1_in_rule__JvmLowerBound__Group__064137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__JvmLowerBound__Group__0__Impl64165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__1__Impl_in_rule__JvmLowerBound__Group__164196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__TypeReferenceAssignment_1_in_rule__JvmLowerBound__Group__1__Impl64223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0__Impl_in_rule__JvmLowerBoundAnded__Group__064257 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__1_in_rule__JvmLowerBoundAnded__Group__064260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_197_in_rule__JvmLowerBoundAnded__Group__0__Impl64288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__1__Impl_in_rule__JvmLowerBoundAnded__Group__164319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__TypeReferenceAssignment_1_in_rule__JvmLowerBoundAnded__Group__1__Impl64346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0__Impl_in_rule__QualifiedNameWithWildcard__Group__064382 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__1_in_rule__QualifiedNameWithWildcard__Group__064385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__QualifiedNameWithWildcard__Group__0__Impl64412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__1__Impl_in_rule__QualifiedNameWithWildcard__Group__164441 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__2_in_rule__QualifiedNameWithWildcard__Group__164444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__QualifiedNameWithWildcard__Group__1__Impl64472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__2__Impl_in_rule__QualifiedNameWithWildcard__Group__264503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__QualifiedNameWithWildcard__Group__2__Impl64531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0__Impl_in_rule__XImportDeclaration__Group__064568 = new BitSet(new long[]{0x0000400000000010L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__1_in_rule__XImportDeclaration__Group__064571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__XImportDeclaration__Group__0__Impl64599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__1__Impl_in_rule__XImportDeclaration__Group__164630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__2_in_rule__XImportDeclaration__Group__164633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Alternatives_1_in_rule__XImportDeclaration__Group__1__Impl64660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__2__Impl_in_rule__XImportDeclaration__Group__264690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_179_in_rule__XImportDeclaration__Group__2__Impl64719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0__Impl_in_rule__XImportDeclaration__Group_1_0__064758 = new BitSet(new long[]{0x0001000000000010L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__1_in_rule__XImportDeclaration__Group_1_0__064761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__StaticAssignment_1_0_0_in_rule__XImportDeclaration__Group_1_0__0__Impl64788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__1__Impl_in_rule__XImportDeclaration__Group_1_0__164818 = new BitSet(new long[]{0x0001000000000010L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__2_in_rule__XImportDeclaration__Group_1_0__164821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ExtensionAssignment_1_0_1_in_rule__XImportDeclaration__Group_1_0__1__Impl64848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__2__Impl_in_rule__XImportDeclaration__Group_1_0__264879 = new BitSet(new long[]{0x0000001000000010L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__3_in_rule__XImportDeclaration__Group_1_0__264882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_0_2_in_rule__XImportDeclaration__Group_1_0__2__Impl64909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__3__Impl_in_rule__XImportDeclaration__Group_1_0__364939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Alternatives_1_0_3_in_rule__XImportDeclaration__Group_1_0__3__Impl64966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0__Impl_in_rule__QualifiedNameInStaticImport__Group__065004 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__1_in_rule__QualifiedNameInStaticImport__Group__065007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__QualifiedNameInStaticImport__Group__0__Impl65034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__1__Impl_in_rule__QualifiedNameInStaticImport__Group__165063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__QualifiedNameInStaticImport__Group__1__Impl65091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2__0_in_rule__DatamartProperty__UnorderedGroup_265127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_0__0_in_rule__DatamartProperty__UnorderedGroup_2__Impl65214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_1__0_in_rule__DatamartProperty__UnorderedGroup_2__Impl65305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__Group_2_2__0_in_rule__DatamartProperty__UnorderedGroup_2__Impl65396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2__Impl_in_rule__DatamartProperty__UnorderedGroup_2__065455 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L,0x0000000000000000L,0x0000000000000600L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2__1_in_rule__DatamartProperty__UnorderedGroup_2__065458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2__Impl_in_rule__DatamartProperty__UnorderedGroup_2__165483 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L,0x0000000000000000L,0x0000000000000600L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2__2_in_rule__DatamartProperty__UnorderedGroup_2__165486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartProperty__UnorderedGroup_2__Impl_in_rule__DatamartProperty__UnorderedGroup_2__265511 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartPackage_in_rule__DatamartModel__PackagesAssignment65545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__DatamartPackage__NameAssignment_265576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartImport_in_rule__DatamartPackage__ImportsAssignment_3_165607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDefinition_in_rule__DatamartPackage__DefinitionsAssignment_3_265638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartDefinition__NameAssignment_165669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_198_in_rule__DatamartDefinition__DescriptionAssignment_2_065705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLESTRING_in_rule__DatamartDefinition__DescriptionValueAssignment_2_165744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartRole_in_rule__DatamartDefinition__RolesAssignment_3_265775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSource_in_rule__DatamartDefinition__SourceAssignment_565806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartRole__AssignedRoleAssignment_165841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTaskQueryTopicEnum_in_rule__DatamartTask__TaskQueryAssignment_165876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartColumn_in_rule__DatamartTask__ColumnsAssignment_2_265907 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCondition_in_rule__DatamartTask__ConditionsAssignment_3_265938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTaskQueryColumnEnum_in_rule__DatamartColumn__ColumnRefAssignment_165969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTaskFilterEnum_in_rule__DatamartTaskFilter__FilterRefAssignment_166000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartCube__CubeRefAssignment_166035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_199_in_rule__DatamartCube__NonEmptyAssignment_266075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCubeElement_in_rule__DatamartCube__AxisslicerAssignment_466114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartReference__RefAssignment_166149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartEntity__EntityRefAssignment_166188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_200_in_rule__DatamartEntity__TrackingAssignment_266228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartNavigation_in_rule__DatamartEntity__NavigationsAssignment_4_266267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartProperty_in_rule__DatamartEntity__PropertiesAssignment_5_266298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartCondition_in_rule__DatamartEntity__ConditionsAssignment_6_266329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOrder_in_rule__DatamartEntity__OrderingAssignment_7_266360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__DatamartEntity__FillerMinCountRowsAssignment_8_166391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__DatamartEntity__FillerMaxCountRowsAssignment_8_366422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerData_in_rule__DatamartEntity__FillerDatasAssignment_8_566453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartReference_in_rule__DatamartOwner__JoinRefAssignment_166484 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets028 {
+        public static final BitSet FOLLOW_ruleDatamartEntity_in_rule__DatamartOwner__DatamartEntityAssignment_366515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartReference_in_rule__DatamartMember__JoinRefAssignment_166546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartEntity_in_rule__DatamartMember__DatamartEntityAssignment_366577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartProperty__PropertyRefAssignment_166612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__DatamartProperty__AggregatedAssignment_2_0_066652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSqlAggregationEnum_in_rule__DatamartProperty__AggregateAssignment_2_0_166691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_201_in_rule__DatamartProperty__PlacedAssignment_2_1_066727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAxisEnum_in_rule__DatamartProperty__AxisAssignment_2_1_166766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_202_in_rule__DatamartProperty__ScaledAssignment_2_2_066802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValueScaleEnum_in_rule__DatamartProperty__ScaleAssignment_2_2_166841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartDisjunction_in_rule__DatamartCondition__ConditionAssignment_166872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartOrder__OrderByAssignment_166907 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOrderEnum_in_rule__DatamartOrder__OrderHowAssignment_266942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartConjunction_in_rule__DatamartDisjunction__RightAssignment_1_166973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartConditionalExpression_in_rule__DatamartConjunction__RightAssignment_1_167004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOperatorEnum_in_rule__DatamartConditionalExpression__OperatorAssignment_1_0_167035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartOperand_in_rule__DatamartConditionalExpression__RightAssignment_1_167066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_rule__DatamartValue__NumberValueAssignment_067097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_rule__DatamartValue__StringValueAssignment_167128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_203_in_rule__DatamartValue__FilteredAssignment_2_0_067164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_204_in_rule__DatamartValue__OptionalAssignment_2_0_167208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_205_in_rule__DatamartValue__SelectedAssignment_2_167252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_rule__DatamartDefineDerivedMeasure__NameAssignment_167291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAddition_in_rule__DatamartDefineDerivedMeasure__DerivedElementAssignment_367322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMultiplication_in_rule__DatamartAddition__RightAssignment_1_167353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartPrimary_in_rule__DatamartMultiplication__RightAssignment_1_167384 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_rule__DatamartNumberOrElement__ValueAssignment_067415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartFunction_in_rule__DatamartMemberTuple__FunctionAssignment_0_0_067446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartParameterFunction_in_rule__DatamartMemberTuple__FunctionAssignment_0_0_167477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartHierarchy_in_rule__DatamartMemberTuple__HierarchyAssignment_167508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_rule__DatamartMemberTuple__RightAssignment_2_267539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunctionEnum_in_rule__DatamartFunction__FunctionAssignment67570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleParameterFunctionEnum_in_rule__DatamartParameterFunction__FunctionAssignment_067601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartFunctionIntParameter_in_rule__DatamartParameterFunction__ParameterAssignment_267632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__DatamartFunctionIntParameter__ValueAssignment67663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSetFunctionEnum_in_rule__DatamartSetFunction__SetFunctionAssignment67694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSetParameterFunctionEnum_in_rule__DatamartSetParameterFunction__SetFunctionAssignment_067725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartFunctionIntParameter_in_rule__DatamartSetParameterFunction__ParameterAssignment_267756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSetAggregationEnum_in_rule__DatamartSetAggregationFunction__AggregationAssignment_067787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartFunctionIntParameter_in_rule__DatamartSetAggregationFunction__ParameterAssignment_267818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetFunction_in_rule__DatamartSetTuple__SetFunctionAssignment_0_067849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetParameterFunction_in_rule__DatamartSetTuple__SetFunctionAssignment_0_167880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartHierarchy_in_rule__DatamartSetTuple__RightAssignment_1_267911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAggregationEnum_in_rule__DatamartAggregationFunction__AggregationAssignment67942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartAggregationFunction_in_rule__DatamartAggregation__AggregationAssignment_067973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetTuple_in_rule__DatamartAggregation__SetAssignment_2_068004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartHierarchy_in_rule__DatamartAggregation__SetAssignment_2_168035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_rule__DatamartAggregation__RightAssignment_3_268066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetAggregationFunction_in_rule__DatamartSetAggregation__AggregationAssignment_068097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartSetTuple_in_rule__DatamartSetAggregation__SetAssignment_2_068128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartHierarchy_in_rule__DatamartSetAggregation__SetAssignment_2_168159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartMeasure_in_rule__DatamartSetAggregation__RightAssignment_3_268190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartElement_in_rule__DatamartSlicer__ElementAssignment_168221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAxisEnum_in_rule__DatamartAxis__NameAssignment_168252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartElement_in_rule__DatamartAxis__ElementsAssignment_368283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartDerivedMeasure__DerivedRefAssignment_168318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_202_in_rule__DatamartDerivedMeasure__ScaledAssignment_2_068358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValueScaleEnum_in_rule__DatamartDerivedMeasure__ScaleAssignment_2_168397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartMeasure__MeasureRefAssignment_168432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_202_in_rule__DatamartMeasure__ScaledAssignment_2_068472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValueScaleEnum_in_rule__DatamartMeasure__ScaleAssignment_2_168511 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartHierarchy__HierarchyRefAssignment_168546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__DatamartHierarchy__DefaultMemberAssignment_268586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_206_in_rule__DatamartHierarchy__AllMemberAssignment_368630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_207_in_rule__DatamartHierarchy__AllLevelsAssignment_468674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartHierarchy__LevelRefAssignment_5_168717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_203_in_rule__DatamartHierarchy__FilteredAssignment_5_2_068757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_205_in_rule__DatamartHierarchy__SelectedAssignment_5_2_168801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_208_in_rule__DatamartHierarchy__AllAssignment_6_068845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_209_in_rule__DatamartHierarchy__ExceptAssignment_6_1_068889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__DatamartHierarchy__ExceptRefAssignment_6_1_168932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_210_in_rule__DatamartHierarchy__OrderedAssignment_6_2_068972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DatamartHierarchy__OrderRefAlternatives_6_2_1_0_in_rule__DatamartHierarchy__OrderRefAssignment_6_2_169011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__DatamartHierarchy__DescendingAssignment_6_2_269049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDatamartQualifiedNameWithWildCard_in_rule__DatamartImport__ImportedNamespaceAssignment_169088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerData__PropertyRefAssignment_169123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePropertyFillerType_in_rule__PropertyFillerData__FillerTypeAssignment_369158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerDateFuture__DateFutureYearsAssignment_169189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerDatePast__DatePastYearsAssignment_169220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerDateRange__DateBeginYearsAssignment_169251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerDateRange__DateEndYearsAssignment_369282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSignedNumber_in_rule__PropertyFillerSignedDoubleRange__BeginRangeAssignment_1_0_069313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedDoubleRange__BeginRangeRefAssignment_1_0_169348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSignedNumber_in_rule__PropertyFillerSignedDoubleRange__EndRangeAssignment_1_2_069383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedDoubleRange__EndRangeRefAssignment_1_2_169418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerSignedDoubleRange__DecimalsAssignment_369453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnsignedNumber_in_rule__PropertyFillerSignedDoubleRange__RoundedAssignment_5_169484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSignedNumber_in_rule__PropertyFillerSignedDoubleRandom__ItemsAssignment_269515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerSignedIntegerRange__BeginRangeAssignment_2_0_069546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedIntegerRange__BeginRangeRefAssignment_2_0_169581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerSignedIntegerRange__EndRangeAssignment_2_2_069616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PropertyFillerSignedIntegerRange__EndRangeRefAssignment_2_2_169651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerSignedIntegerRange__RoundedAssignment_3_169686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSINT_in_rule__PropertyFillerSignedIntegerRandom__ItemsAssignment_269717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_rule__PropertyFillerTextRandom__ItemsAssignment_269748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__PropertyFillerTextParagraphs__CountAssignment_269779 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/internal/DatamartDSLActivator.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/internal/DatamartDSLActivator.java
new file mode 100644
index 0000000..a84f0e8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src-gen/org/eclipse/osbp/xtext/datamartdsl/ui/internal/DatamartDSLActivator.java
@@ -0,0 +1,105 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 DatamartDSLActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_DATAMARTDSL_DATAMARTDSL = "org.eclipse.osbp.xtext.datamartdsl.DatamartDSL";
+	
+	private static final Logger logger = Logger.getLogger(DatamartDSLActivator.class);
+	
+	private static DatamartDSLActivator 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 DatamartDSLActivator 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_DATAMARTDSL_DATAMARTDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.datamartdsl.DatamartDSLRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_DATAMARTDSL_DATAMARTDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLDocumentationTranslator.java
new file mode 100644
index 0000000..6437a1e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLDocumentationTranslator.java
@@ -0,0 +1,46 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.ui;
+
+import java.util.ResourceBundle;
+
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+
+/**
+ * The Class DatamartDSLDocumentationTranslator.
+ */
+public class DatamartDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
+	 
+    /** The instance. */
+    private static DatamartDSLDocumentationTranslator INSTANCE = new DatamartDSLDocumentationTranslator();
+
+    /** 
+     * Instance.
+	 *
+	 * @return the basic dsl documentation translator
+	 */
+    public static BasicDSLDocumentationTranslator instance() {
+        return INSTANCE;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator#getResourceBundle()
+     */
+    @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.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHover.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHover.java
new file mode 100644
index 0000000..e737dd4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHover.java
@@ -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
+ * 
+ */
+
+package org.eclipse.osbp.xtext.datamartdsl.ui;
+
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHover;
+
+/**
+ * The Class DatamartDSLEObjectHover.
+ */
+public class DatamartDSLEObjectHover extends BasicDSLEObjectHover {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHover#getHoverProvider()
+	 */
+	@Override
+	public IEObjectHoverProvider getHoverProvider() {
+		return DatamartDSLEObjectHoverProvider.instance();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHoverDocumentationProvider.java
new file mode 100644
index 0000000..eb0ff22
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHoverDocumentationProvider.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.datamartdsl.ui;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider;
+
+/**
+ * The Class DatamartDSLEObjectHoverDocumentationProvider.
+ */
+public class DatamartDSLEObjectHoverDocumentationProvider extends BasicDSLEObjectHoverDocumentationProvider {
+	 
+    /** The instance. */
+    private static DatamartDSLEObjectHoverDocumentationProvider INSTANCE;
+
+    /** Instance.
+	 *
+	 * @return the datamart dsle object hover documentation provider
+	 */
+    public static DatamartDSLEObjectHoverDocumentationProvider instance() {
+        return INSTANCE;
+    }
+
+    /** Instantiates a new datamart dsle object hover documentation provider.
+	 */
+    public DatamartDSLEObjectHoverDocumentationProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider#getTranslator()
+     */
+    @Override
+    protected BasicDSLDocumentationTranslator getTranslator() {
+        return DatamartDSLDocumentationTranslator.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHoverProvider.java
new file mode 100644
index 0000000..54d99cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLEObjectHoverProvider.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.datamartdsl.ui;
+
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;
+
+/**
+ * The Class DatamartDSLEObjectHoverProvider.
+ */
+public class DatamartDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
+	 
+    /** The instance. */
+    private static DatamartDSLEObjectHoverProvider INSTANCE;
+
+    /** Instance.
+	 *
+	 * @return the datamart dsle object hover provider
+	 */
+    public static DatamartDSLEObjectHoverProvider instance() {
+        return INSTANCE;
+    }
+
+    /** Instantiates a new datamart dsle object hover provider.
+	 */
+    public DatamartDSLEObjectHoverProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider#getDocumentationHoverProvider()
+     */
+    @Override
+    public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
+        return DatamartDSLEObjectHoverDocumentationProvider.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLUiModule.java b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLUiModule.java
new file mode 100644
index 0000000..d1391bd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/DatamartDSLUiModule.java
@@ -0,0 +1,67 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 DatamartDSLUiModule extends org.eclipse.osbp.xtext.datamartdsl.ui.AbstractDatamartDSLUiModule {
+	
+	/** The logger. */
+	private static Logger LOGGER = LoggerFactory.getLogger(DatamartDSLUiModule.class);
+	
+	/**
+	 * Instantiates a new datamart dsl ui module.
+	 *
+	 * @param plugin
+	 *            the plugin
+	 */
+	public DatamartDSLUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	    BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ui.AbstractDatamartDSLUiModule#bindIEObjectHover()
+	 */
+	@Override
+	public Class<? extends IEObjectHover> bindIEObjectHover() {
+	    return DatamartDSLEObjectHover.class;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ui.AbstractDatamartDSLUiModule#bindIEObjectHoverProvider()
+	 */
+	@Override
+	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
+	    return DatamartDSLEObjectHoverProvider.class;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ui.AbstractDatamartDSLUiModule#bindIEObjectHoverDocumentationProvider()
+	 */
+	@Override
+	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+	    return DatamartDSLEObjectHoverDocumentationProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/DatamartDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/DatamartDSLProposalProvider.xtend
new file mode 100644
index 0000000..d3aba74
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/DatamartDSLProposalProvider.xtend
@@ -0,0 +1,325 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.ui.contentassist
+
+import com.google.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.jface.viewers.StyledString
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.osbp.xtext.datamartdsl.OrderEnum
+import org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLDocumentationTranslator
+import org.eclipse.osbp.xtext.datamartdsl.util.AxisEnumUtil
+import org.eclipse.osbp.xtext.datamartdsl.util.SetAggregationEnumUtil
+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
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+class DatamartDSLProposalProvider extends AbstractDatamartDSLProposalProvider {
+
+	@Inject TerminalsProposalProvider provider
+	@Inject BasicDSLProposalProviderHelper providerHelper
+
+	override protected StyledString getKeywordDisplayString(Keyword keyword) {
+		return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword,
+			DatamartDSLDocumentationTranslator.instance())
+	}
+
+	/**
+	 * This override will enable 1 length non letter characters as keyword.
+	 */
+	override protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+		return true;
+	}
+
+	override protected boolean isValidProposal(String proposal, String prefix, ContentAssistContext context) {
+		var result = super.isValidProposal(proposal, prefix, context);
+		if (context.getCurrentModel() instanceof DatamartAxis) {
+			return isAxisValidProposal(context.currentModel as DatamartAxis, proposal, result);
+		} else if (context.getCurrentModel() instanceof DatamartHierarchy) {
+			return isHierarchyValidProposal(context.currentModel as DatamartHierarchy, proposal, result);
+		} else if (context.getCurrentModel() instanceof DatamartProperty) {
+			return isPropertyValidProposal(context.currentModel as DatamartProperty, proposal, result);
+		} else if (context.getCurrentModel() instanceof DatamartCondition) {
+			return isConditionValidProposal(context.currentModel as DatamartCondition, proposal, result);
+		} else if (context.getCurrentModel() instanceof ConditionalExpression) {
+			return isConditionalExpressionValidProposal(context.getCurrentModel() as ConditionalExpression, proposal,
+				result);
+		} else if (context.getCurrentModel() instanceof DatamartOrder) {
+			return isOrderValidProposal(context.getCurrentModel() as DatamartOrder, proposal, result);
+		}
+		return result;
+	}
+	
+	def boolean isOrderValidProposal(DatamartOrder currentOrder, String proposal, boolean result) {
+		for (e : OrderEnum.values.toList) {
+			if (e.literal.equals(proposal)) {
+				return true
+			}
+		}
+		var eObj = currentOrder.eContainer()
+		if (eObj instanceof DatamartEntity) {
+			for (attribute : (eObj as DatamartEntity).entityRef.allAttributes) {
+				if (attribute.name.equals(proposal) && !attribute.isId && !attribute.isUuid) {
+					return true
+				}
+			}
+		}
+		return false
+	}
+
+	def boolean isConditionalExpressionValidProposal(ConditionalExpression currentConditionalExpression, String proposal,
+		boolean result) {
+		if (proposal.equals("column") || proposal.equals("filter") || proposal.equals("property")) {
+			return false;
+		}
+		if (currentConditionalExpression.getOperator().getLiteral().equals("=") &&
+			(proposal.equals("filtered") || proposal.equals("selected"))) {
+			return true
+		}
+		return false
+	}
+
+	def boolean isConditionValidProposal(DatamartCondition currentCondition, String proposal, boolean result) {
+		var eObj = currentCondition.eContainer()
+		switch (eObj) {
+			DatamartEntity:
+				if (proposal.equals("column") || proposal.equals("filter")) {
+					return false;
+				}
+			DatamartTask:
+				if (proposal.equals("property")) {
+					return false;
+				}
+			DatamartCube:
+				if (proposal.equals("column") || proposal.equals("filter") || proposal.equals("property")) {
+					return false;
+				}
+		}
+		if (proposal.equals("filtered") || proposal.equals("optional") || proposal.equals("selected")) {
+			return false
+		}
+		return true
+	}
+
+	def boolean isPropertyValidProposal(DatamartProperty currentProperty, String proposal, boolean result) {
+		if (currentProperty.isPlaced()) {
+			for (idx : AxisEnumUtil.VALUES) {
+
+				// for now, only 2 axis are possible for sql entities
+				if (proposal.equals(idx.getLiteral()) && (idx.value > 1 || idx.value < 0)) {
+					return false
+				}
+			}
+		}
+		if (proposal.equals("aggregate")) {
+			var typeTemp = currentProperty.getPropertyRef().getType()
+			if (typeTemp != null && (typeTemp instanceof LDataType)) {
+				var type = typeTemp as LDataType
+				if (type.jvmTypeReference == null) {
+					return false
+				}
+				if (!type.jvmTypeReference.getSimpleName().equals("float") &&
+					!type.jvmTypeReference.getSimpleName().equals("double") &&
+					!type.jvmTypeReference.getSimpleName().equals("int")) {
+					return false
+				}
+			} else {
+				return false
+			}
+		}
+		return true
+	}
+
+	def boolean isHierarchyValidProposal(DatamartHierarchy currentHierarchy, String proposal, boolean result) {
+		var DatamartAxis axis = null
+		var DatamartSlicer slicer = null
+		var eObj = currentHierarchy.eContainer()
+		while (!(eObj instanceof DatamartCubeElement)) {
+			eObj = eObj.eContainer()
+		}
+		if (eObj != null) {
+			if (eObj instanceof DatamartAxis) {
+				axis = eObj as DatamartAxis
+				if (axis != null && axis.getElements() != null) {
+					for (element : axis.getElements()) {
+						if (element instanceof DatamartHierarchy) {
+							if ((element as DatamartHierarchy).getHierarchyRef() != null &&
+								(element as DatamartHierarchy).getHierarchyRef() != currentHierarchy) {
+								if (proposal.equals((element as DatamartHierarchy).getHierarchyRef().getName())) {
+									return true
+								}
+							}
+							if (proposal.equals("detailed")) {
+								return true
+							}
+							if (proposal.equals("condensed") || proposal.equals("default") ||
+								proposal.equals("exploded")) {
+								if ((element as DatamartHierarchy).getLevelRef() != null)
+									return false
+							}
+							if (proposal.equals("selected")) { // multiselect useless for hierarchies, useful only for slicers 
+								return false
+							}
+							return true
+						}
+						if (element instanceof DatamartMeasure) {
+							if ((element as DatamartMeasure).getMeasureRef() != null) {
+								if (proposal.equals((element as DatamartMeasure).getMeasureRef().getName())) {
+									return false
+								}
+							}
+						}
+						return true
+					}
+				}
+			}
+			if (eObj instanceof DatamartSlicer) {
+				slicer = eObj as DatamartSlicer
+				if (slicer != null && slicer.getElement() != null) {
+					var element = slicer.getElement()
+					if (element instanceof DatamartHierarchy) {
+						if ((element as DatamartHierarchy).getHierarchyRef() != null &&
+							(element as DatamartHierarchy).getHierarchyRef() != currentHierarchy) {
+							if (proposal.equals((element as DatamartHierarchy).getHierarchyRef().getName())) {
+								return true
+							}
+						}
+						return true
+					}
+					if (element instanceof DatamartMeasure) {
+						if ((element as DatamartMeasure).getMeasureRef() != null) {
+							if (proposal.equals((element as DatamartMeasure).getMeasureRef().getName())) {
+								return false
+							}
+						}
+					}
+					return true
+				}
+			}
+			if (eObj instanceof DatamartDefineDerivedMeasure) {
+				return true
+			}
+		}
+		return false
+	}
+
+	def boolean isAxisValidProposal(DatamartAxis currentAxis, String proposal, boolean result) {
+		if ("{".equals(proposal))
+			return true
+		if ("}".equals(proposal))
+			return true
+		var eObj = currentAxis.eContainer()
+		var DatamartAxis axisWithMeasure = null
+		if (eObj != null && eObj instanceof DatamartCube) {
+
+			// find out the axis carrying a measure
+			var idx = 0
+			for (DatamartCubeElement axisslicer : (eObj as DatamartCube).getAxisslicer()) {
+				if (axisslicer instanceof DatamartAxis) {
+					for (element : (axisslicer as DatamartAxis).getElements()) {
+						if (element instanceof DatamartMeasure || element instanceof DatamartDerivedMeasure) {
+							axisWithMeasure = axisslicer as DatamartAxis
+						}
+					}
+					idx = idx + 1
+				}
+			}
+
+			// find out the axis number we are in
+			idx = 0
+			var axisOrdinal = 0
+			for (axisslicer : (eObj as DatamartCube).getAxisslicer()) {
+				if (axisslicer instanceof DatamartAxis) {
+					if (axisslicer == currentAxis) {
+						axisOrdinal = idx
+					}
+					idx = idx + 1
+				}
+			}
+			var orderedProposal = AxisEnumUtil.get(axisOrdinal).getLiteral()
+			if (proposal.equals(orderedProposal)) {
+				return true
+			}
+		}
+
+		for (setAggregation : SetAggregationEnumUtil.VALUES) {
+			if (setAggregation.getLiteral().equals(proposal)) {
+				return true
+			}
+		}
+		if (proposal.equals("hierarchy")) {
+			return true
+		}
+
+		if ((proposal.equals("measure") || proposal.equals("derived")) &&
+			(axisWithMeasure == null || axisWithMeasure == currentAxis)) {
+			return true
+		}
+		return false
+	}
+
+	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_DatamartQualifiedNameWithWildCard(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_ID(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor)
+	}
+
+	override public void complete_INT(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_INT(model, ruleCall, context, acceptor)
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..245aec2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLDescriptionLabelProvider.xtend
@@ -0,0 +1,34 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.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 DatamartDSLDescriptionLabelProvider extends org.eclipse.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider {
+
+	// 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.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLLabelProvider.xtend b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLLabelProvider.xtend
new file mode 100644
index 0000000..583388f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLLabelProvider.xtend
@@ -0,0 +1,130 @@
+/*
+ *
+ *  Copyright (c) 2013, 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.datamartdsl.ui.labeling
+
+import com.google.inject.Inject
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+import org.eclipse.osbp.xtext.datamartdsl.DatamartModel
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter
+import org.eclipse.osbp.xtext.datamartdsl.Expression
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression
+import org.eclipse.osbp.xtext.datamartdsl.Addition
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication
+import org.eclipse.osbp.xtext.datamartdsl.Division
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction
+
+/**
+ * Provides labels for a EObjects.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class DatamartDSLLabelProvider extends BasicDSLLabelProvider {
+
+	@Inject
+	new(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	 override text ( Object o ) {
+		switch (o) {
+			DatamartPackage					: generateText( o, 'package'        , o.name )
+			DatamartDefinition				: generateText( o, 'definition'     , o.name )
+			DatamartRole					: generateText( o, 'role'           , o.assignedRole.name )
+			DatamartTask					: generateText( o, 'task'           , o.taskQuery.literal )
+			DatamartColumn					: generateText( o, 'column'         , o.columnRef.literal )
+			DatamartTaskFilter				: generateText( o, 'task filter'    , o.filterRef.literal )
+			DatamartCube 					: generateText( o, 'cube'           , o.cubeRef.name )
+			DatamartReference				: generateText( o, 'reference'      , o.ref.name )
+			DatamartEntity					: generateText( o, 'entity'         , o.entityRef.name )
+			DatamartOwner					: generateText( o, 'owner'          , o.joinRef.ref.name )
+			DatamartMember					: generateText( o, 'member'         , o.joinRef.ref.name )
+			DatamartProperty				: generateText( o, 'property'       , o.propertyRef.name )
+			DatamartCondition 				: generateText( o, 'condition'      )
+			DatamartOrder					: generateText( o, 'order'          )
+			DatamartDerivedMeasure			: generateText( o, 'derived measure'        , o.derivedRef.name )
+			DatamartDefineDerivedMeasure	: generateText( o, 'defined derived measure', o.name )
+			DatamartSlicer					: generateText( o, 'slicer'         )
+			DatamartAxis					: generateText( o, 'axis'           )
+			DatamartMeasure					: generateText( o, 'measure'        , o.measureRef.name )
+			DatamartHierarchy				: generateText( o, 'hierarchy'      , o.hierarchyRef.name )
+			Addition						: generateText( o, 'addition'       )
+			Subtraction						: generateText( o, 'subtraction'    )
+			Multiplication					: generateText( o, 'multiplication' )
+			Division						: generateText( o, 'division'       )
+			Conjunction						: generateText( o, 'conjunction'    )
+			Disjunction						: generateText( o, 'disjunction'    )
+			ConditionalExpression			: generateText( o, 'conditional expression' )
+			Expression						: generateText( o, 'expression'     )
+			default							: super.text( o )
+		}
+	}
+
+	override image ( Object o ) {
+		switch (o) {
+			DatamartModel					: getInternalImage( 'model.png'                    , class )
+			DatamartPackage					: getInternalImage( 'package.gif'                  , class )
+			DatamartDefinition				: getInternalImage( 'definition.png'               , class )
+			DatamartRole					: getInternalImage( 'role.png'                     , class )
+			DatamartTask					: getInternalImage( 'task.png'                     , class )
+			DatamartColumn					: getInternalImage( 'column.png'                   , class )
+			DatamartTaskFilter				: getInternalImage( 'taskfilter.png'               , class )
+			DatamartCube  					: getInternalImage( 'dsl_cube.png'                 , class )
+			DatamartReference				: getInternalImage( 'reference.png'                , class )
+			DatamartEntity					: getInternalImage( 'datamartentity.png'           , class )
+			DatamartOwner					: getInternalImage( 'owner.png'                    , class )
+			DatamartMember					: getInternalImage( 'member.png'                   , class )
+			DatamartProperty				: getInternalImage( 'datamartproperty.png'         , class )
+			DatamartCondition				: getInternalImage( 'condition.png'                , class )
+			DatamartOrder					: getInternalImage( 'order.png'                    , class )
+			DatamartDerivedMeasure			: getInternalImage( 'measure-derived.png'          , class )
+			DatamartDefineDerivedMeasure	: getInternalImage( 'measure-defined.png'          , class )
+			DatamartSlicer					: getInternalImage( 'slicer.png'                   , class )
+			DatamartAxis					: getInternalImage( 'axis.png'                     , class )
+			DatamartMeasure					: getInternalImage( 'measure.png'                  , class )
+			DatamartHierarchy  				: getInternalImage( 'dsl_hierarchy.gif'            , class )
+			Addition						: getInternalImage( 'math-3-addition.png'          , class )
+			Subtraction						: getInternalImage( 'math-3-subtraction.png'       , class )
+			Multiplication					: getInternalImage( 'math-3-multiplication.png'    , class )
+			Division						: getInternalImage( 'math-3-division.png'          , class )
+			Conjunction						: getInternalImage( 'math-3-conjunction.png'       , class )
+			Disjunction						: getInternalImage( 'math-3-disjunction.png'       , class )
+			ConditionalExpression			: getInternalImage( 'expression-conditional.png'   , class )
+			Expression  					: getInternalImage( 'expression.png'               , class )
+			default							: super.image( o )
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/outline/DatamartDSLOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/outline/DatamartDSLOutlineTreeProvider.xtend
new file mode 100644
index 0000000..1499120
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/outline/DatamartDSLOutlineTreeProvider.xtend
@@ -0,0 +1,23 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class DatamartDSLOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/quickfix/DatamartDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/quickfix/DatamartDSLQuickfixProvider.xtend
new file mode 100644
index 0000000..bc7b469
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/src/org/eclipse/osbp/xtext/datamartdsl/ui/quickfix/DatamartDSLQuickfixProvider.xtend
@@ -0,0 +1,36 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.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 DatamartDSLQuickfixProvider extends org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider {
+
+//	@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.datamartdsl.ui/templates/templates.xml b/org.eclipse.osbp.xtext.datamartdsl.ui/templates/templates.xml
new file mode 100644
index 0000000..07a788c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/DatamartDSLProposalProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/DatamartDSLProposalProvider.java
new file mode 100644
index 0000000..94dc74d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/contentassist/DatamartDSLProposalProvider.java
@@ -0,0 +1,626 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.ui.contentassist;
+
+import com.google.common.base.Objects;
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.StyledString;
+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.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.OperatorEnum;
+import org.eclipse.osbp.xtext.datamartdsl.OrderEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ui.DatamartDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.datamartdsl.ui.contentassist.AbstractDatamartDSLProposalProvider;
+import org.eclipse.osbp.xtext.datamartdsl.util.AxisEnumUtil;
+import org.eclipse.osbp.xtext.datamartdsl.util.SetAggregationEnumUtil;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+@SuppressWarnings("all")
+public class DatamartDSLProposalProvider extends AbstractDatamartDSLProposalProvider {
+  @Inject
+  private TerminalsProposalProvider provider;
+  
+  @Inject
+  private BasicDSLProposalProviderHelper providerHelper;
+  
+  protected StyledString getKeywordDisplayString(final Keyword keyword) {
+    BasicDSLDocumentationTranslator _instance = DatamartDSLDocumentationTranslator.instance();
+    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance);
+  }
+  
+  /**
+   * This override will enable 1 length non letter characters as keyword.
+   */
+  protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
+    return true;
+  }
+  
+  protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
+    boolean result = super.isValidProposal(proposal, prefix, context);
+    EObject _currentModel = context.getCurrentModel();
+    if ((_currentModel instanceof DatamartAxis)) {
+      EObject _currentModel_1 = context.getCurrentModel();
+      return this.isAxisValidProposal(((DatamartAxis) _currentModel_1), proposal, result);
+    } else {
+      EObject _currentModel_2 = context.getCurrentModel();
+      if ((_currentModel_2 instanceof DatamartHierarchy)) {
+        EObject _currentModel_3 = context.getCurrentModel();
+        return this.isHierarchyValidProposal(((DatamartHierarchy) _currentModel_3), proposal, result);
+      } else {
+        EObject _currentModel_4 = context.getCurrentModel();
+        if ((_currentModel_4 instanceof DatamartProperty)) {
+          EObject _currentModel_5 = context.getCurrentModel();
+          return this.isPropertyValidProposal(((DatamartProperty) _currentModel_5), proposal, result);
+        } else {
+          EObject _currentModel_6 = context.getCurrentModel();
+          if ((_currentModel_6 instanceof DatamartCondition)) {
+            EObject _currentModel_7 = context.getCurrentModel();
+            return this.isConditionValidProposal(((DatamartCondition) _currentModel_7), proposal, result);
+          } else {
+            EObject _currentModel_8 = context.getCurrentModel();
+            if ((_currentModel_8 instanceof ConditionalExpression)) {
+              EObject _currentModel_9 = context.getCurrentModel();
+              return this.isConditionalExpressionValidProposal(((ConditionalExpression) _currentModel_9), proposal, result);
+            } else {
+              EObject _currentModel_10 = context.getCurrentModel();
+              if ((_currentModel_10 instanceof DatamartOrder)) {
+                EObject _currentModel_11 = context.getCurrentModel();
+                return this.isOrderValidProposal(((DatamartOrder) _currentModel_11), proposal, result);
+              }
+            }
+          }
+        }
+      }
+    }
+    return result;
+  }
+  
+  public boolean isOrderValidProposal(final DatamartOrder currentOrder, final String proposal, final boolean result) {
+    OrderEnum[] _values = OrderEnum.values();
+    List<OrderEnum> _list = IterableExtensions.<OrderEnum>toList(((Iterable<OrderEnum>)Conversions.doWrapArray(_values)));
+    for (final OrderEnum e : _list) {
+      String _literal = e.getLiteral();
+      boolean _equals = _literal.equals(proposal);
+      if (_equals) {
+        return true;
+      }
+    }
+    EObject eObj = currentOrder.eContainer();
+    if ((eObj instanceof DatamartEntity)) {
+      LEntity _entityRef = ((DatamartEntity) eObj).getEntityRef();
+      List<LEntityAttribute> _allAttributes = _entityRef.getAllAttributes();
+      for (final LEntityAttribute attribute : _allAttributes) {
+        boolean _and = false;
+        boolean _and_1 = false;
+        String _name = attribute.getName();
+        boolean _equals_1 = _name.equals(proposal);
+        if (!_equals_1) {
+          _and_1 = false;
+        } else {
+          boolean _isId = attribute.isId();
+          boolean _not = (!_isId);
+          _and_1 = _not;
+        }
+        if (!_and_1) {
+          _and = false;
+        } else {
+          boolean _isUuid = attribute.isUuid();
+          boolean _not_1 = (!_isUuid);
+          _and = _not_1;
+        }
+        if (_and) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  public boolean isConditionalExpressionValidProposal(final ConditionalExpression currentConditionalExpression, final String proposal, final boolean result) {
+    boolean _or = false;
+    boolean _or_1 = false;
+    boolean _equals = proposal.equals("column");
+    if (_equals) {
+      _or_1 = true;
+    } else {
+      boolean _equals_1 = proposal.equals("filter");
+      _or_1 = _equals_1;
+    }
+    if (_or_1) {
+      _or = true;
+    } else {
+      boolean _equals_2 = proposal.equals("property");
+      _or = _equals_2;
+    }
+    if (_or) {
+      return false;
+    }
+    boolean _and = false;
+    OperatorEnum _operator = currentConditionalExpression.getOperator();
+    String _literal = _operator.getLiteral();
+    boolean _equals_3 = _literal.equals("=");
+    if (!_equals_3) {
+      _and = false;
+    } else {
+      boolean _or_2 = false;
+      boolean _equals_4 = proposal.equals("filtered");
+      if (_equals_4) {
+        _or_2 = true;
+      } else {
+        boolean _equals_5 = proposal.equals("selected");
+        _or_2 = _equals_5;
+      }
+      _and = _or_2;
+    }
+    if (_and) {
+      return true;
+    }
+    return false;
+  }
+  
+  public boolean isConditionValidProposal(final DatamartCondition currentCondition, final String proposal, final boolean result) {
+    EObject eObj = currentCondition.eContainer();
+    boolean _matched = false;
+    if (!_matched) {
+      if (eObj instanceof DatamartEntity) {
+        _matched=true;
+        boolean _or = false;
+        boolean _equals = proposal.equals("column");
+        if (_equals) {
+          _or = true;
+        } else {
+          boolean _equals_1 = proposal.equals("filter");
+          _or = _equals_1;
+        }
+        if (_or) {
+          return false;
+        }
+      }
+    }
+    if (!_matched) {
+      if (eObj instanceof DatamartTask) {
+        _matched=true;
+        boolean _equals = proposal.equals("property");
+        if (_equals) {
+          return false;
+        }
+      }
+    }
+    if (!_matched) {
+      if (eObj instanceof DatamartCube) {
+        _matched=true;
+        boolean _or = false;
+        boolean _or_1 = false;
+        boolean _equals = proposal.equals("column");
+        if (_equals) {
+          _or_1 = true;
+        } else {
+          boolean _equals_1 = proposal.equals("filter");
+          _or_1 = _equals_1;
+        }
+        if (_or_1) {
+          _or = true;
+        } else {
+          boolean _equals_2 = proposal.equals("property");
+          _or = _equals_2;
+        }
+        if (_or) {
+          return false;
+        }
+      }
+    }
+    boolean _or = false;
+    boolean _or_1 = false;
+    boolean _equals = proposal.equals("filtered");
+    if (_equals) {
+      _or_1 = true;
+    } else {
+      boolean _equals_1 = proposal.equals("optional");
+      _or_1 = _equals_1;
+    }
+    if (_or_1) {
+      _or = true;
+    } else {
+      boolean _equals_2 = proposal.equals("selected");
+      _or = _equals_2;
+    }
+    if (_or) {
+      return false;
+    }
+    return true;
+  }
+  
+  public boolean isPropertyValidProposal(final DatamartProperty currentProperty, final String proposal, final boolean result) {
+    boolean _isPlaced = currentProperty.isPlaced();
+    if (_isPlaced) {
+      for (final AxisEnum idx : AxisEnumUtil.VALUES) {
+        boolean _and = false;
+        String _literal = idx.getLiteral();
+        boolean _equals = proposal.equals(_literal);
+        if (!_equals) {
+          _and = false;
+        } else {
+          boolean _or = false;
+          int _value = idx.getValue();
+          boolean _greaterThan = (_value > 1);
+          if (_greaterThan) {
+            _or = true;
+          } else {
+            int _value_1 = idx.getValue();
+            boolean _lessThan = (_value_1 < 0);
+            _or = _lessThan;
+          }
+          _and = _or;
+        }
+        if (_and) {
+          return false;
+        }
+      }
+    }
+    boolean _equals_1 = proposal.equals("aggregate");
+    if (_equals_1) {
+      LEntityAttribute _propertyRef = currentProperty.getPropertyRef();
+      LScalarType typeTemp = _propertyRef.getType();
+      boolean _and_1 = false;
+      boolean _notEquals = (!Objects.equal(typeTemp, null));
+      if (!_notEquals) {
+        _and_1 = false;
+      } else {
+        _and_1 = (typeTemp instanceof LDataType);
+      }
+      if (_and_1) {
+        LDataType type = ((LDataType) typeTemp);
+        JvmTypeReference _jvmTypeReference = type.getJvmTypeReference();
+        boolean _equals_2 = Objects.equal(_jvmTypeReference, null);
+        if (_equals_2) {
+          return false;
+        }
+        boolean _and_2 = false;
+        boolean _and_3 = false;
+        JvmTypeReference _jvmTypeReference_1 = type.getJvmTypeReference();
+        String _simpleName = _jvmTypeReference_1.getSimpleName();
+        boolean _equals_3 = _simpleName.equals("float");
+        boolean _not = (!_equals_3);
+        if (!_not) {
+          _and_3 = false;
+        } else {
+          JvmTypeReference _jvmTypeReference_2 = type.getJvmTypeReference();
+          String _simpleName_1 = _jvmTypeReference_2.getSimpleName();
+          boolean _equals_4 = _simpleName_1.equals("double");
+          boolean _not_1 = (!_equals_4);
+          _and_3 = _not_1;
+        }
+        if (!_and_3) {
+          _and_2 = false;
+        } else {
+          JvmTypeReference _jvmTypeReference_3 = type.getJvmTypeReference();
+          String _simpleName_2 = _jvmTypeReference_3.getSimpleName();
+          boolean _equals_5 = _simpleName_2.equals("int");
+          boolean _not_2 = (!_equals_5);
+          _and_2 = _not_2;
+        }
+        if (_and_2) {
+          return false;
+        }
+      } else {
+        return false;
+      }
+    }
+    return true;
+  }
+  
+  public boolean isHierarchyValidProposal(final DatamartHierarchy currentHierarchy, final String proposal, final boolean result) {
+    DatamartAxis axis = null;
+    DatamartSlicer slicer = null;
+    EObject eObj = currentHierarchy.eContainer();
+    while ((!(eObj instanceof DatamartCubeElement))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      if ((eObj instanceof DatamartAxis)) {
+        axis = ((DatamartAxis) eObj);
+        boolean _and = false;
+        boolean _notEquals_1 = (!Objects.equal(axis, null));
+        if (!_notEquals_1) {
+          _and = false;
+        } else {
+          EList<DatamartElement> _elements = axis.getElements();
+          boolean _notEquals_2 = (!Objects.equal(_elements, null));
+          _and = _notEquals_2;
+        }
+        if (_and) {
+          EList<DatamartElement> _elements_1 = axis.getElements();
+          for (final DatamartElement element : _elements_1) {
+            {
+              if ((element instanceof DatamartHierarchy)) {
+                boolean _and_1 = false;
+                CubeHierarchy _hierarchyRef = ((DatamartHierarchy) element).getHierarchyRef();
+                boolean _notEquals_3 = (!Objects.equal(_hierarchyRef, null));
+                if (!_notEquals_3) {
+                  _and_1 = false;
+                } else {
+                  CubeHierarchy _hierarchyRef_1 = ((DatamartHierarchy) element).getHierarchyRef();
+                  boolean _notEquals_4 = (!Objects.equal(_hierarchyRef_1, currentHierarchy));
+                  _and_1 = _notEquals_4;
+                }
+                if (_and_1) {
+                  CubeHierarchy _hierarchyRef_2 = ((DatamartHierarchy) element).getHierarchyRef();
+                  String _name = _hierarchyRef_2.getName();
+                  boolean _equals = proposal.equals(_name);
+                  if (_equals) {
+                    return true;
+                  }
+                }
+                boolean _equals_1 = proposal.equals("detailed");
+                if (_equals_1) {
+                  return true;
+                }
+                boolean _or = false;
+                boolean _or_1 = false;
+                boolean _equals_2 = proposal.equals("condensed");
+                if (_equals_2) {
+                  _or_1 = true;
+                } else {
+                  boolean _equals_3 = proposal.equals("default");
+                  _or_1 = _equals_3;
+                }
+                if (_or_1) {
+                  _or = true;
+                } else {
+                  boolean _equals_4 = proposal.equals("exploded");
+                  _or = _equals_4;
+                }
+                if (_or) {
+                  CubeLevel _levelRef = ((DatamartHierarchy) element).getLevelRef();
+                  boolean _notEquals_5 = (!Objects.equal(_levelRef, null));
+                  if (_notEquals_5) {
+                    return false;
+                  }
+                }
+                boolean _equals_5 = proposal.equals("selected");
+                if (_equals_5) {
+                  return false;
+                }
+                return true;
+              }
+              if ((element instanceof DatamartMeasure)) {
+                CubeMeasure _measureRef = ((DatamartMeasure) element).getMeasureRef();
+                boolean _notEquals_6 = (!Objects.equal(_measureRef, null));
+                if (_notEquals_6) {
+                  CubeMeasure _measureRef_1 = ((DatamartMeasure) element).getMeasureRef();
+                  String _name_1 = _measureRef_1.getName();
+                  boolean _equals_6 = proposal.equals(_name_1);
+                  if (_equals_6) {
+                    return false;
+                  }
+                }
+              }
+              return true;
+            }
+          }
+        }
+      }
+      if ((eObj instanceof DatamartSlicer)) {
+        slicer = ((DatamartSlicer) eObj);
+        boolean _and_1 = false;
+        boolean _notEquals_3 = (!Objects.equal(slicer, null));
+        if (!_notEquals_3) {
+          _and_1 = false;
+        } else {
+          DatamartElement _element = slicer.getElement();
+          boolean _notEquals_4 = (!Objects.equal(_element, null));
+          _and_1 = _notEquals_4;
+        }
+        if (_and_1) {
+          DatamartElement element_1 = slicer.getElement();
+          if ((element_1 instanceof DatamartHierarchy)) {
+            boolean _and_2 = false;
+            CubeHierarchy _hierarchyRef = ((DatamartHierarchy) element_1).getHierarchyRef();
+            boolean _notEquals_5 = (!Objects.equal(_hierarchyRef, null));
+            if (!_notEquals_5) {
+              _and_2 = false;
+            } else {
+              CubeHierarchy _hierarchyRef_1 = ((DatamartHierarchy) element_1).getHierarchyRef();
+              boolean _notEquals_6 = (!Objects.equal(_hierarchyRef_1, currentHierarchy));
+              _and_2 = _notEquals_6;
+            }
+            if (_and_2) {
+              CubeHierarchy _hierarchyRef_2 = ((DatamartHierarchy) element_1).getHierarchyRef();
+              String _name = _hierarchyRef_2.getName();
+              boolean _equals = proposal.equals(_name);
+              if (_equals) {
+                return true;
+              }
+            }
+            return true;
+          }
+          if ((element_1 instanceof DatamartMeasure)) {
+            CubeMeasure _measureRef = ((DatamartMeasure) element_1).getMeasureRef();
+            boolean _notEquals_7 = (!Objects.equal(_measureRef, null));
+            if (_notEquals_7) {
+              CubeMeasure _measureRef_1 = ((DatamartMeasure) element_1).getMeasureRef();
+              String _name_1 = _measureRef_1.getName();
+              boolean _equals_1 = proposal.equals(_name_1);
+              if (_equals_1) {
+                return false;
+              }
+            }
+          }
+          return true;
+        }
+      }
+      if ((eObj instanceof DatamartDefineDerivedMeasure)) {
+        return true;
+      }
+    }
+    return false;
+  }
+  
+  public boolean isAxisValidProposal(final DatamartAxis currentAxis, final String proposal, final boolean result) {
+    boolean _equals = "{".equals(proposal);
+    if (_equals) {
+      return true;
+    }
+    boolean _equals_1 = "}".equals(proposal);
+    if (_equals_1) {
+      return true;
+    }
+    EObject eObj = currentAxis.eContainer();
+    DatamartAxis axisWithMeasure = null;
+    boolean _and = false;
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (!_notEquals) {
+      _and = false;
+    } else {
+      _and = (eObj instanceof DatamartCube);
+    }
+    if (_and) {
+      int idx = 0;
+      EList<DatamartCubeElement> _axisslicer = ((DatamartCube) eObj).getAxisslicer();
+      for (final DatamartCubeElement axisslicer : _axisslicer) {
+        if ((axisslicer instanceof DatamartAxis)) {
+          EList<DatamartElement> _elements = ((DatamartAxis) axisslicer).getElements();
+          for (final DatamartElement element : _elements) {
+            boolean _or = false;
+            if ((element instanceof DatamartMeasure)) {
+              _or = true;
+            } else {
+              _or = (element instanceof DatamartDerivedMeasure);
+            }
+            if (_or) {
+              axisWithMeasure = ((DatamartAxis) axisslicer);
+            }
+          }
+          idx = (idx + 1);
+        }
+      }
+      idx = 0;
+      int axisOrdinal = 0;
+      EList<DatamartCubeElement> _axisslicer_1 = ((DatamartCube) eObj).getAxisslicer();
+      for (final DatamartCubeElement axisslicer_1 : _axisslicer_1) {
+        if ((axisslicer_1 instanceof DatamartAxis)) {
+          boolean _equals_2 = Objects.equal(axisslicer_1, currentAxis);
+          if (_equals_2) {
+            axisOrdinal = idx;
+          }
+          idx = (idx + 1);
+        }
+      }
+      AxisEnum _get = AxisEnumUtil.get(axisOrdinal);
+      String orderedProposal = _get.getLiteral();
+      boolean _equals_3 = proposal.equals(orderedProposal);
+      if (_equals_3) {
+        return true;
+      }
+    }
+    for (final SetAggregationEnum setAggregation : SetAggregationEnumUtil.VALUES) {
+      String _literal = setAggregation.getLiteral();
+      boolean _equals_4 = _literal.equals(proposal);
+      if (_equals_4) {
+        return true;
+      }
+    }
+    boolean _equals_5 = proposal.equals("hierarchy");
+    if (_equals_5) {
+      return true;
+    }
+    boolean _and_1 = false;
+    boolean _or_1 = false;
+    boolean _equals_6 = proposal.equals("measure");
+    if (_equals_6) {
+      _or_1 = true;
+    } else {
+      boolean _equals_7 = proposal.equals("derived");
+      _or_1 = _equals_7;
+    }
+    if (!_or_1) {
+      _and_1 = false;
+    } else {
+      boolean _or_2 = false;
+      boolean _equals_8 = Objects.equal(axisWithMeasure, null);
+      if (_equals_8) {
+        _or_2 = true;
+      } else {
+        boolean _equals_9 = Objects.equal(axisWithMeasure, currentAxis);
+        _or_2 = _equals_9;
+      }
+      _and_1 = _or_2;
+    }
+    if (_and_1) {
+      return true;
+    }
+    return false;
+  }
+  
+  public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+  }
+  
+  public void complete_DatamartQualifiedNameWithWildCard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+  }
+  
+  public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_STRING(model, ruleCall, context, acceptor);
+  }
+  
+  public void complete_TRANSLATABLEID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_ID(model, ruleCall, context, acceptor);
+  }
+  
+  public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_ID(model, ruleCall, context, acceptor);
+  }
+  
+  public void complete_INT(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
+    this.provider.complete_INT(model, ruleCall, context, acceptor);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLDescriptionLabelProvider.java
new file mode 100644
index 0000000..9b2a45e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLDescriptionLabelProvider.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.ui.labeling;
+
+import org.eclipse.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class DatamartDSLDescriptionLabelProvider extends XbaseDescriptionLabelProvider {
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLLabelProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLLabelProvider.java
new file mode 100644
index 0000000..aed07d9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/labeling/DatamartDSLLabelProvider.java
@@ -0,0 +1,488 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.ui.labeling;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+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.xtext.authorizationdsl.Role;
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+import org.eclipse.osbp.xtext.datamartdsl.Addition;
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression;
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter;
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction;
+import org.eclipse.osbp.xtext.datamartdsl.Division;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication;
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction;
+import org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum;
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+@SuppressWarnings("all")
+public class DatamartDSLLabelProvider extends BasicDSLLabelProvider {
+  @Inject
+  public DatamartDSLLabelProvider(final AdapterFactoryLabelProvider delegate) {
+    super(delegate);
+  }
+  
+  public Object text(final Object o) {
+    Object _switchResult = null;
+    boolean _matched = false;
+    if (!_matched) {
+      if (o instanceof DatamartPackage) {
+        _matched=true;
+        String _name = ((DatamartPackage)o).getName();
+        _switchResult = this.generateText(o, "package", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartDefinition) {
+        _matched=true;
+        String _name = ((DatamartDefinition)o).getName();
+        _switchResult = this.generateText(o, "definition", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartRole) {
+        _matched=true;
+        Role _assignedRole = ((DatamartRole)o).getAssignedRole();
+        String _name = _assignedRole.getName();
+        _switchResult = this.generateText(o, "role", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartTask) {
+        _matched=true;
+        TaskQueryTopicEnum _taskQuery = ((DatamartTask)o).getTaskQuery();
+        String _literal = _taskQuery.getLiteral();
+        _switchResult = this.generateText(o, "task", _literal);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartColumn) {
+        _matched=true;
+        TaskQueryColumnEnum _columnRef = ((DatamartColumn)o).getColumnRef();
+        String _literal = _columnRef.getLiteral();
+        _switchResult = this.generateText(o, "column", _literal);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartTaskFilter) {
+        _matched=true;
+        TaskFilterEnum _filterRef = ((DatamartTaskFilter)o).getFilterRef();
+        String _literal = _filterRef.getLiteral();
+        _switchResult = this.generateText(o, "task filter", _literal);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartCube) {
+        _matched=true;
+        CubeType _cubeRef = ((DatamartCube)o).getCubeRef();
+        String _name = _cubeRef.getName();
+        _switchResult = this.generateText(o, "cube", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartReference) {
+        _matched=true;
+        LEntityReference _ref = ((DatamartReference)o).getRef();
+        String _name = _ref.getName();
+        _switchResult = this.generateText(o, "reference", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartEntity) {
+        _matched=true;
+        LEntity _entityRef = ((DatamartEntity)o).getEntityRef();
+        String _name = _entityRef.getName();
+        _switchResult = this.generateText(o, "entity", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartOwner) {
+        _matched=true;
+        DatamartReference _joinRef = ((DatamartOwner)o).getJoinRef();
+        LEntityReference _ref = _joinRef.getRef();
+        String _name = _ref.getName();
+        _switchResult = this.generateText(o, "owner", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartMember) {
+        _matched=true;
+        DatamartReference _joinRef = ((DatamartMember)o).getJoinRef();
+        LEntityReference _ref = _joinRef.getRef();
+        String _name = _ref.getName();
+        _switchResult = this.generateText(o, "member", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartProperty) {
+        _matched=true;
+        LEntityAttribute _propertyRef = ((DatamartProperty)o).getPropertyRef();
+        String _name = _propertyRef.getName();
+        _switchResult = this.generateText(o, "property", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartCondition) {
+        _matched=true;
+        _switchResult = this.generateText(o, "condition");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartOrder) {
+        _matched=true;
+        _switchResult = this.generateText(o, "order");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartDerivedMeasure) {
+        _matched=true;
+        DatamartDefineDerivedMeasure _derivedRef = ((DatamartDerivedMeasure)o).getDerivedRef();
+        String _name = _derivedRef.getName();
+        _switchResult = this.generateText(o, "derived measure", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartDefineDerivedMeasure) {
+        _matched=true;
+        String _name = ((DatamartDefineDerivedMeasure)o).getName();
+        _switchResult = this.generateText(o, "defined derived measure", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartSlicer) {
+        _matched=true;
+        _switchResult = this.generateText(o, "slicer");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartAxis) {
+        _matched=true;
+        _switchResult = this.generateText(o, "axis");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartMeasure) {
+        _matched=true;
+        CubeMeasure _measureRef = ((DatamartMeasure)o).getMeasureRef();
+        String _name = _measureRef.getName();
+        _switchResult = this.generateText(o, "measure", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartHierarchy) {
+        _matched=true;
+        CubeHierarchy _hierarchyRef = ((DatamartHierarchy)o).getHierarchyRef();
+        String _name = _hierarchyRef.getName();
+        _switchResult = this.generateText(o, "hierarchy", _name);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Addition) {
+        _matched=true;
+        _switchResult = this.generateText(o, "addition");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Subtraction) {
+        _matched=true;
+        _switchResult = this.generateText(o, "subtraction");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Multiplication) {
+        _matched=true;
+        _switchResult = this.generateText(o, "multiplication");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Division) {
+        _matched=true;
+        _switchResult = this.generateText(o, "division");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Conjunction) {
+        _matched=true;
+        _switchResult = this.generateText(o, "conjunction");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Disjunction) {
+        _matched=true;
+        _switchResult = this.generateText(o, "disjunction");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ConditionalExpression) {
+        _matched=true;
+        _switchResult = this.generateText(o, "conditional expression");
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Expression) {
+        _matched=true;
+        _switchResult = this.generateText(o, "expression");
+      }
+    }
+    if (!_matched) {
+      _switchResult = super.text(o);
+    }
+    return _switchResult;
+  }
+  
+  public Object image(final Object o) {
+    Object _switchResult = null;
+    boolean _matched = false;
+    if (!_matched) {
+      if (o instanceof DatamartModel) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("model.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartPackage) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("package.gif", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartDefinition) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("definition.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartRole) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("role.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartTask) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("task.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartColumn) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("column.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartTaskFilter) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("taskfilter.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartCube) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("dsl_cube.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartReference) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("reference.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartEntity) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("datamartentity.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartOwner) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("owner.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartMember) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("member.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartProperty) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("datamartproperty.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartCondition) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("condition.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartOrder) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("order.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartDerivedMeasure) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("measure-derived.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartDefineDerivedMeasure) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("measure-defined.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartSlicer) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("slicer.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartAxis) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("axis.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartMeasure) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("measure.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof DatamartHierarchy) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("dsl_hierarchy.gif", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Addition) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("math-3-addition.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Subtraction) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("math-3-subtraction.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Multiplication) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("math-3-multiplication.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Division) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("math-3-division.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Conjunction) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("math-3-conjunction.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Disjunction) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("math-3-disjunction.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof ConditionalExpression) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("expression-conditional.png", _class);
+      }
+    }
+    if (!_matched) {
+      if (o instanceof Expression) {
+        _matched=true;
+        Class<? extends DatamartDSLLabelProvider> _class = this.getClass();
+        _switchResult = this.getInternalImage("expression.png", _class);
+      }
+    }
+    if (!_matched) {
+      _switchResult = super.image(o);
+    }
+    return _switchResult;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/outline/DatamartDSLOutlineTreeProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/outline/DatamartDSLOutlineTreeProvider.java
new file mode 100644
index 0000000..6bf0a71
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/outline/DatamartDSLOutlineTreeProvider.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * Customization of the default outline structure.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+@SuppressWarnings("all")
+public class DatamartDSLOutlineTreeProvider extends DefaultOutlineTreeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/quickfix/DatamartDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/quickfix/DatamartDSLQuickfixProvider.java
new file mode 100644
index 0000000..af61353
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl.ui/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/ui/quickfix/DatamartDSLQuickfixProvider.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.ui.quickfix;
+
+import org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider;
+
+/**
+ * Custom quickfixes.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+@SuppressWarnings("all")
+public class DatamartDSLQuickfixProvider extends XbaseWithAnnotationsQuickfixProvider {
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/.project b/org.eclipse.osbp.xtext.datamartdsl/.project
new file mode 100644
index 0000000..21ac126
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.datamartdsl</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.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.datamartdsl/LICENSE.txt b/org.eclipse.osbp.xtext.datamartdsl/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.datamartdsl/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4610a00
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/META-INF/MANIFEST.MF
@@ -0,0 +1,93 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.datamartdsl
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.xtext.datamartdsl;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api,
+ org.apache.log4j;bundle-version="1.2.15",
+ org.apache.xerces;bundle-version="2.9.0",
+ org.apache.commons.logging,
+ javax.annotation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.codegen.ecore,
+ org.eclipse.emf.mwe.utils,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.common,
+ org.antlr.runtime,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional;visibility:=reexport,
+ org.eclipse.osbp.xtext.blip;visibility:=reexport,
+ org.eclipse.bpmn2;visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xcore.lib,
+ org.junit;bundle-version="4.10.0",
+ org.eclipse.emf.ecore.xcore,
+ com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ org.apache.commons.lang3,
+ org.eclipse.core.databinding,
+ org.eclipse.core.databinding.beans,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ olap4j.osgi;bundle-version="[1.1.0,1.3.0)",
+ mondrian.osgi;bundle-version="[3.5.0,3.5.1)",
+ javax.persistence;bundle-version="2.1.0",
+ org.jsoup,
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
+ 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.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.preferences;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.authentication;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.eventbroker;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";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.datamart.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.mwe2.launch;bundle-version="2.7.1";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)",
+ org.eclipse.osbp.utils.ui;bundle-version="0.9.0",
+ org.drools.api;bundle-version="5.5.1",
+ org.eclipse.osgi.services;bundle-version="3.4.0"
+Import-Package: javax.validation,
+ javax.validation.constraints,
+ org.apache.log4j,
+ org.eclipse.osbp.bpm.api;version="0.9.0",
+ org.eclipse.osbp.dsl.common.datatypes;version="0.9.0",
+ org.eclipse.osbp.ui.api.datamart;version="0.9.0",
+ org.eclipse.osbp.ui.api.metadata;version="0.9.0",
+ org.eclipse.osbp.ui.api.user;version="0.9.0",
+ org.eclipse.osbp.ui.api.useraccess;version="0.9.0",
+ org.eclipse.osbp.user;version="0.9.0"
+Export-Package: org.eclipse.osbp.xtext.datamartdsl;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.formatting;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.impl;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.jvmmodel;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.parser.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.parser.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.scoping;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.serializer;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.services;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.util;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.validation;version="0.9.0",
+ org.eclipse.osbp.xtext.datamartdsl.valueconverter;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.datamartdsl.Activator
diff --git a/org.eclipse.osbp.xtext.datamartdsl/about.html b/org.eclipse.osbp.xtext.datamartdsl/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/about.ini b/org.eclipse.osbp.xtext.datamartdsl/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/about.mappings b/org.eclipse.osbp.xtext.datamartdsl/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/about.properties b/org.eclipse.osbp.xtext.datamartdsl/about.properties
new file mode 100644
index 0000000..0c181ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl
+
+################ 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.datamartdsl/build.properties b/org.eclipse.osbp.xtext.datamartdsl/build.properties
new file mode 100644
index 0000000..02acd28
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/build.properties
@@ -0,0 +1,31 @@
+# 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.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html			   
+               
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Addition.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Addition.java
new file mode 100644
index 0000000..20a899d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Addition.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Addition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getAddition()
+ * @model
+ * @generated
+ */
+public interface Addition extends Calculation {
+} // Addition
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/AggregationEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/AggregationEnum.java
new file mode 100644
index 0000000..d315565
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/AggregationEnum.java
@@ -0,0 +1,270 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Aggregation Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getAggregationEnum()
+ * @model
+ * @generated
+ */
+public enum AggregationEnum implements Enumerator {
+	/**
+	 * The '<em><b>AVG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AVG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AVG(0, "AVG", "average"),
+
+	/**
+	 * The '<em><b>SUM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUM(0, "SUM", "summation"),
+
+	/**
+	 * The '<em><b>AGGREGATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AGGREGATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AGGREGATE(0, "AGGREGATE", "aggregate"),
+
+	/**
+	 * The '<em><b>STDDEV</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STDDEV_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STDDEV(0, "STDDEV", "deviation");
+
+	/**
+	 * 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="average"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AVG_VALUE = 0;
+
+	/**
+	 * 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="summation"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUM_VALUE = 0;
+
+	/**
+	 * The '<em><b>AGGREGATE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AGGREGATE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AGGREGATE
+	 * @model literal="aggregate"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AGGREGATE_VALUE = 0;
+
+	/**
+	 * The '<em><b>STDDEV</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>STDDEV</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #STDDEV
+	 * @model literal="deviation"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STDDEV_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Aggregation Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final AggregationEnum[] VALUES_ARRAY =
+		new AggregationEnum[] {
+			AVG,
+			SUM,
+			AGGREGATE,
+			STDDEV,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Aggregation Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<AggregationEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Aggregation Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AggregationEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AggregationEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Aggregation Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AggregationEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AggregationEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Aggregation Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AggregationEnum get(int value) {
+		switch (value) {
+			case AVG_VALUE: return AVG;
+		}
+		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 AggregationEnum(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;
+	}
+	
+} //AggregationEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/AxisEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/AxisEnum.java
new file mode 100644
index 0000000..69a85c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/AxisEnum.java
@@ -0,0 +1,327 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Axis Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getAxisEnum()
+ * @model
+ * @generated
+ */
+public enum AxisEnum implements Enumerator {
+	/**
+	 * The '<em><b>DEFAULT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DEFAULT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DEFAULT(-1, "DEFAULT", "default"),
+
+	/**
+	 * The '<em><b>COLUMNS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COLUMNS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	COLUMNS(0, "COLUMNS", "columns"),
+
+	/**
+	 * The '<em><b>ROWS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ROWS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ROWS(1, "ROWS", "rows"),
+
+	/**
+	 * The '<em><b>PAGES</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PAGES_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PAGES(2, "PAGES", "pages"),
+
+	/**
+	 * The '<em><b>SECTIONS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SECTIONS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SECTIONS(3, "SECTIONS", "sections"),
+
+	/**
+	 * The '<em><b>CHAPTERS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CHAPTERS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CHAPTERS(4, "CHAPTERS", "chapters");
+
+	/**
+	 * The '<em><b>DEFAULT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DEFAULT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DEFAULT
+	 * @model literal="default"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DEFAULT_VALUE = -1;
+
+	/**
+	 * The '<em><b>COLUMNS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>COLUMNS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #COLUMNS
+	 * @model literal="columns"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COLUMNS_VALUE = 0;
+
+	/**
+	 * The '<em><b>ROWS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ROWS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ROWS
+	 * @model literal="rows"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ROWS_VALUE = 1;
+
+	/**
+	 * The '<em><b>PAGES</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PAGES</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PAGES
+	 * @model literal="pages"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PAGES_VALUE = 2;
+
+	/**
+	 * The '<em><b>SECTIONS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SECTIONS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SECTIONS
+	 * @model literal="sections"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SECTIONS_VALUE = 3;
+
+	/**
+	 * The '<em><b>CHAPTERS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>CHAPTERS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #CHAPTERS
+	 * @model literal="chapters"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CHAPTERS_VALUE = 4;
+
+	/**
+	 * An array of all the '<em><b>Axis Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final AxisEnum[] VALUES_ARRAY =
+		new AxisEnum[] {
+			DEFAULT,
+			COLUMNS,
+			ROWS,
+			PAGES,
+			SECTIONS,
+			CHAPTERS,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Axis Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<AxisEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Axis Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AxisEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AxisEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Axis Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AxisEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			AxisEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Axis Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AxisEnum get(int value) {
+		switch (value) {
+			case DEFAULT_VALUE: return DEFAULT;
+			case COLUMNS_VALUE: return COLUMNS;
+			case ROWS_VALUE: return ROWS;
+			case PAGES_VALUE: return PAGES;
+			case SECTIONS_VALUE: return SECTIONS;
+			case CHAPTERS_VALUE: return CHAPTERS;
+		}
+		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 AxisEnum(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;
+	}
+	
+} //AxisEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Calculation.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Calculation.java
new file mode 100644
index 0000000..0797621
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Calculation.java
@@ -0,0 +1,87 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Calculation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Calculation#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Calculation#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getCalculation()
+ * @model
+ * @generated
+ */
+public interface Calculation extends Expression, DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Left</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>Left</em>' containment reference.
+	 * @see #setLeft(Expression)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getCalculation_Left()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeft();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Calculation#getLeft <em>Left</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Left</em>' containment reference.
+	 * @see #getLeft()
+	 * @generated
+	 */
+	void setLeft(Expression value);
+
+	/**
+	 * Returns the value of the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Right</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>Right</em>' containment reference.
+	 * @see #setRight(Expression)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getCalculation_Right()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getRight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Calculation#getRight <em>Right</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Right</em>' containment reference.
+	 * @see #getRight()
+	 * @generated
+	 */
+	void setRight(Expression value);
+
+} // Calculation
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ConditionalExpression.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ConditionalExpression.java
new file mode 100644
index 0000000..fcf3c6a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ConditionalExpression.java
@@ -0,0 +1,63 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conditional Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression#getOperator <em>Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getConditionalExpression()
+ * @model
+ * @generated
+ */
+public interface ConditionalExpression extends Calculation {
+	/**
+	 * Returns the value of the '<em><b>Operator</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.OperatorEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operator</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Operator</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OperatorEnum
+	 * @see #setOperator(OperatorEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getConditionalExpression_Operator()
+	 * @model unique="false"
+	 * @generated
+	 */
+	OperatorEnum getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression#getOperator <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Operator</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OperatorEnum
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(OperatorEnum value);
+
+} // ConditionalExpression
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Conjunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Conjunction.java
new file mode 100644
index 0000000..402a196
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Conjunction.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conjunction</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getConjunction()
+ * @model
+ * @generated
+ */
+public interface Conjunction extends Calculation {
+} // Conjunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregation.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregation.java
new file mode 100644
index 0000000..5427e74
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregation.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Aggregation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregation()
+ * @model
+ * @generated
+ */
+public interface DatamartAggregation extends DatamartAggregationExpression {
+} // DatamartAggregation
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationExpression.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationExpression.java
new file mode 100644
index 0000000..e004c47
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationExpression.java
@@ -0,0 +1,87 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Aggregation Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationExpression()
+ * @model
+ * @generated
+ */
+public interface DatamartAggregationExpression extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Left</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>Left</em>' containment reference.
+	 * @see #setLeft(Expression)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationExpression_Left()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeft();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getLeft <em>Left</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Left</em>' containment reference.
+	 * @see #getLeft()
+	 * @generated
+	 */
+	void setLeft(Expression value);
+
+	/**
+	 * Returns the value of the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Right</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>Right</em>' containment reference.
+	 * @see #setRight(DatamartMeasure)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationExpression_Right()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartMeasure getRight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getRight <em>Right</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Right</em>' containment reference.
+	 * @see #getRight()
+	 * @generated
+	 */
+	void setRight(DatamartMeasure value);
+
+} // DatamartAggregationExpression
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationFunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationFunction.java
new file mode 100644
index 0000000..d027db8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationFunction.java
@@ -0,0 +1,90 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Aggregation Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationFunction()
+ * @model
+ * @generated
+ */
+public interface DatamartAggregationFunction extends DatamartAggregationFunctionInterface {
+	/**
+	 * Returns the value of the '<em><b>Aggregation</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.AggregationEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Aggregation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Aggregation</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AggregationEnum
+	 * @see #setAggregation(AggregationEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationFunction_Aggregation()
+	 * @model unique="false"
+	 * @generated
+	 */
+	AggregationEnum getAggregation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getAggregation <em>Aggregation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aggregation</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AggregationEnum
+	 * @see #getAggregation()
+	 * @generated
+	 */
+	void setAggregation(AggregationEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference.
+	 * @see #setParameter(DatamartFunctionIntParameter)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationFunction_Parameter()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartFunctionIntParameter getParameter();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getParameter <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter</em>' containment reference.
+	 * @see #getParameter()
+	 * @generated
+	 */
+	void setParameter(DatamartFunctionIntParameter value);
+
+} // DatamartAggregationFunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationFunctionInterface.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationFunctionInterface.java
new file mode 100644
index 0000000..638c096
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAggregationFunctionInterface.java
@@ -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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Aggregation Function Interface</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAggregationFunctionInterface()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface DatamartAggregationFunctionInterface extends EObject {
+} // DatamartAggregationFunctionInterface
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAxis.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAxis.java
new file mode 100644
index 0000000..0f5de68
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartAxis.java
@@ -0,0 +1,81 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Axis</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAxis()
+ * @model
+ * @generated
+ */
+public interface DatamartAxis extends DatamartCubeElement {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.AxisEnum}.
+	 * <!-- 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 org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+	 * @see #setName(AxisEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAxis_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	AxisEnum getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(AxisEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Elements</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>Elements</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartAxis_Elements()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartElement> getElements();
+
+} // DatamartAxis
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartBase.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartBase.java
new file mode 100644
index 0000000..fe65b0f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartBase.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Base</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartBase#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartBase()
+ * @model
+ * @generated
+ */
+public interface DatamartBase extends DatamartLazyResolver {
+	/**
+	 * 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.datamartdsl.DatamartDSLPackage#getDatamartBase_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartBase#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);
+
+} // DatamartBase
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartColumn.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartColumn.java
new file mode 100644
index 0000000..54cd501
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartColumn.java
@@ -0,0 +1,63 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartColumn#getColumnRef <em>Column Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartColumn()
+ * @model
+ * @generated
+ */
+public interface DatamartColumn extends Expression, DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Column Ref</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Column Ref</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Column Ref</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum
+	 * @see #setColumnRef(TaskQueryColumnEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartColumn_ColumnRef()
+	 * @model unique="false"
+	 * @generated
+	 */
+	TaskQueryColumnEnum getColumnRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartColumn#getColumnRef <em>Column Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Column Ref</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum
+	 * @see #getColumnRef()
+	 * @generated
+	 */
+	void setColumnRef(TaskQueryColumnEnum value);
+
+} // DatamartColumn
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCondition.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCondition.java
new file mode 100644
index 0000000..c0e96b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCondition.java
@@ -0,0 +1,61 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Condition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCondition()
+ * @model
+ * @generated
+ */
+public interface DatamartCondition extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Condition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Condition</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>Condition</em>' containment reference.
+	 * @see #setCondition(Expression)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCondition_Condition()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getCondition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition#getCondition <em>Condition</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Condition</em>' containment reference.
+	 * @see #getCondition()
+	 * @generated
+	 */
+	void setCondition(Expression value);
+
+} // DatamartCondition
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCube.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCube.java
new file mode 100644
index 0000000..ddc0a15
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCube.java
@@ -0,0 +1,107 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Cube</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#isNonEmpty <em>Non Empty</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getCubeRef <em>Cube Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getAxisslicer <em>Axisslicer</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCube()
+ * @model
+ * @generated
+ */
+public interface DatamartCube extends DatamartSource {
+	/**
+	 * Returns the value of the '<em><b>Non Empty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Non Empty</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Non Empty</em>' attribute.
+	 * @see #setNonEmpty(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCube_NonEmpty()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isNonEmpty();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#isNonEmpty <em>Non Empty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Non Empty</em>' attribute.
+	 * @see #isNonEmpty()
+	 * @generated
+	 */
+	void setNonEmpty(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Cube Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cube Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cube Ref</em>' reference.
+	 * @see #setCubeRef(CubeType)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCube_CubeRef()
+	 * @model
+	 * @generated
+	 */
+	CubeType getCubeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getCubeRef <em>Cube Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cube Ref</em>' reference.
+	 * @see #getCubeRef()
+	 * @generated
+	 */
+	void setCubeRef(CubeType value);
+
+	/**
+	 * Returns the value of the '<em><b>Axisslicer</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Axisslicer</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>Axisslicer</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCube_Axisslicer()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartCubeElement> getAxisslicer();
+
+} // DatamartCube
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCubeElement.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCubeElement.java
new file mode 100644
index 0000000..ba4e64a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartCubeElement.java
@@ -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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Cube Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartCubeElement()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface DatamartCubeElement extends EObject {
+} // DatamartCubeElement
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLFactory.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLFactory.java
new file mode 100644
index 0000000..e1abe1a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLFactory.java
@@ -0,0 +1,647 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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.datamartdsl.DatamartDSLPackage
+ * @generated
+ */
+public interface DatamartDSLFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DatamartDSLFactory eINSTANCE = org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Model</em>'.
+	 * @generated
+	 */
+	DatamartModel createDatamartModel();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Lazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Lazy Resolver</em>'.
+	 * @generated
+	 */
+	DatamartLazyResolver createDatamartLazyResolver();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Base</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Base</em>'.
+	 * @generated
+	 */
+	DatamartBase createDatamartBase();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Package</em>'.
+	 * @generated
+	 */
+	DatamartPackage createDatamartPackage();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Definition</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Definition</em>'.
+	 * @generated
+	 */
+	DatamartDefinition createDatamartDefinition();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Role</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Role</em>'.
+	 * @generated
+	 */
+	DatamartRole createDatamartRole();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Task</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Task</em>'.
+	 * @generated
+	 */
+	DatamartTask createDatamartTask();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Cube</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Cube</em>'.
+	 * @generated
+	 */
+	DatamartCube createDatamartCube();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Entity</em>'.
+	 * @generated
+	 */
+	DatamartEntity createDatamartEntity();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Column</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Column</em>'.
+	 * @generated
+	 */
+	DatamartColumn createDatamartColumn();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Task Filter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Task Filter</em>'.
+	 * @generated
+	 */
+	DatamartTaskFilter createDatamartTaskFilter();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Navigation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Navigation</em>'.
+	 * @generated
+	 */
+	DatamartNavigation createDatamartNavigation();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Owner</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Owner</em>'.
+	 * @generated
+	 */
+	DatamartOwner createDatamartOwner();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Member</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Member</em>'.
+	 * @generated
+	 */
+	DatamartMember createDatamartMember();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Property</em>'.
+	 * @generated
+	 */
+	DatamartProperty createDatamartProperty();
+
+	/**
+	 * Returns a new object of class '<em>Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Expression</em>'.
+	 * @generated
+	 */
+	Expression createExpression();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Condition</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Condition</em>'.
+	 * @generated
+	 */
+	DatamartCondition createDatamartCondition();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Order</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Order</em>'.
+	 * @generated
+	 */
+	DatamartOrder createDatamartOrder();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Define Derived Measure</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Define Derived Measure</em>'.
+	 * @generated
+	 */
+	DatamartDefineDerivedMeasure createDatamartDefineDerivedMeasure();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Function</em>'.
+	 * @generated
+	 */
+	DatamartFunction createDatamartFunction();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Parameter Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Parameter Function</em>'.
+	 * @generated
+	 */
+	DatamartParameterFunction createDatamartParameterFunction();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Function Int Parameter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Function Int Parameter</em>'.
+	 * @generated
+	 */
+	DatamartFunctionIntParameter createDatamartFunctionIntParameter();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Set Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Set Function</em>'.
+	 * @generated
+	 */
+	DatamartSetFunction createDatamartSetFunction();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Set Parameter Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Set Parameter Function</em>'.
+	 * @generated
+	 */
+	DatamartSetParameterFunction createDatamartSetParameterFunction();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Set Aggregation Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Set Aggregation Function</em>'.
+	 * @generated
+	 */
+	DatamartSetAggregationFunction createDatamartSetAggregationFunction();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Aggregation Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Aggregation Expression</em>'.
+	 * @generated
+	 */
+	DatamartAggregationExpression createDatamartAggregationExpression();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Set Tuple</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Set Tuple</em>'.
+	 * @generated
+	 */
+	DatamartSetTuple createDatamartSetTuple();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Set Aggregation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Set Aggregation</em>'.
+	 * @generated
+	 */
+	DatamartSetAggregation createDatamartSetAggregation();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Aggregation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Aggregation</em>'.
+	 * @generated
+	 */
+	DatamartAggregation createDatamartAggregation();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Member Tuple</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Member Tuple</em>'.
+	 * @generated
+	 */
+	DatamartMemberTuple createDatamartMemberTuple();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Aggregation Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Aggregation Function</em>'.
+	 * @generated
+	 */
+	DatamartAggregationFunction createDatamartAggregationFunction();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Slicer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Slicer</em>'.
+	 * @generated
+	 */
+	DatamartSlicer createDatamartSlicer();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Axis</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Axis</em>'.
+	 * @generated
+	 */
+	DatamartAxis createDatamartAxis();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Derived Measure</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Derived Measure</em>'.
+	 * @generated
+	 */
+	DatamartDerivedMeasure createDatamartDerivedMeasure();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Measure</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Measure</em>'.
+	 * @generated
+	 */
+	DatamartMeasure createDatamartMeasure();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Hierarchy</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Hierarchy</em>'.
+	 * @generated
+	 */
+	DatamartHierarchy createDatamartHierarchy();
+
+	/**
+	 * Returns a new object of class '<em>Calculation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Calculation</em>'.
+	 * @generated
+	 */
+	Calculation createCalculation();
+
+	/**
+	 * Returns a new object of class '<em>Datamart Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Datamart Reference</em>'.
+	 * @generated
+	 */
+	DatamartReference createDatamartReference();
+
+	/**
+	 * Returns a new object of class '<em>Addition</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Addition</em>'.
+	 * @generated
+	 */
+	Addition createAddition();
+
+	/**
+	 * Returns a new object of class '<em>Division</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Division</em>'.
+	 * @generated
+	 */
+	Division createDivision();
+
+	/**
+	 * Returns a new object of class '<em>Multiplication</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Multiplication</em>'.
+	 * @generated
+	 */
+	Multiplication createMultiplication();
+
+	/**
+	 * Returns a new object of class '<em>Subtraction</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Subtraction</em>'.
+	 * @generated
+	 */
+	Subtraction createSubtraction();
+
+	/**
+	 * Returns a new object of class '<em>Conjunction</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conjunction</em>'.
+	 * @generated
+	 */
+	Conjunction createConjunction();
+
+	/**
+	 * Returns a new object of class '<em>Disjunction</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Disjunction</em>'.
+	 * @generated
+	 */
+	Disjunction createDisjunction();
+
+	/**
+	 * Returns a new object of class '<em>Conditional Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conditional Expression</em>'.
+	 * @generated
+	 */
+	ConditionalExpression createConditionalExpression();
+
+	/**
+	 * Returns a new object of class '<em>Event Broker Data Mart</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Event Broker Data Mart</em>'.
+	 * @generated
+	 */
+	EventBrokerDataMart createEventBrokerDataMart();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Data</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Data</em>'.
+	 * @generated
+	 */
+	PropertyFillerData createPropertyFillerData();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Type</em>'.
+	 * @generated
+	 */
+	PropertyFillerType createPropertyFillerType();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Date Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Date Type</em>'.
+	 * @generated
+	 */
+	PropertyFillerDateType createPropertyFillerDateType();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Double Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Double Type</em>'.
+	 * @generated
+	 */
+	PropertyFillerDoubleType createPropertyFillerDoubleType();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Integer Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Integer Type</em>'.
+	 * @generated
+	 */
+	PropertyFillerIntegerType createPropertyFillerIntegerType();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Text Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Text Type</em>'.
+	 * @generated
+	 */
+	PropertyFillerTextType createPropertyFillerTextType();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Date Future</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Date Future</em>'.
+	 * @generated
+	 */
+	PropertyFillerDateFuture createPropertyFillerDateFuture();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Date Past</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Date Past</em>'.
+	 * @generated
+	 */
+	PropertyFillerDatePast createPropertyFillerDatePast();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Date Range</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Date Range</em>'.
+	 * @generated
+	 */
+	PropertyFillerDateRange createPropertyFillerDateRange();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Signed Double Range</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Signed Double Range</em>'.
+	 * @generated
+	 */
+	PropertyFillerSignedDoubleRange createPropertyFillerSignedDoubleRange();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Signed Double Random</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Signed Double Random</em>'.
+	 * @generated
+	 */
+	PropertyFillerSignedDoubleRandom createPropertyFillerSignedDoubleRandom();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Signed Integer Range</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Signed Integer Range</em>'.
+	 * @generated
+	 */
+	PropertyFillerSignedIntegerRange createPropertyFillerSignedIntegerRange();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Signed Integer Random</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Signed Integer Random</em>'.
+	 * @generated
+	 */
+	PropertyFillerSignedIntegerRandom createPropertyFillerSignedIntegerRandom();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Text Random</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Text Random</em>'.
+	 * @generated
+	 */
+	PropertyFillerTextRandom createPropertyFillerTextRandom();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Text Paragraphs</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Text Paragraphs</em>'.
+	 * @generated
+	 */
+	PropertyFillerTextParagraphs createPropertyFillerTextParagraphs();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Text Sentences</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Text Sentences</em>'.
+	 * @generated
+	 */
+	PropertyFillerTextSentences createPropertyFillerTextSentences();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Text Words</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Text Words</em>'.
+	 * @generated
+	 */
+	PropertyFillerTextWords createPropertyFillerTextWords();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Unsigned Double Range</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Unsigned Double Range</em>'.
+	 * @generated
+	 */
+	PropertyFillerUnsignedDoubleRange createPropertyFillerUnsignedDoubleRange();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Unsigned Double Random</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Unsigned Double Random</em>'.
+	 * @generated
+	 */
+	PropertyFillerUnsignedDoubleRandom createPropertyFillerUnsignedDoubleRandom();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Unsigned Integer Range</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Unsigned Integer Range</em>'.
+	 * @generated
+	 */
+	PropertyFillerUnsignedIntegerRange createPropertyFillerUnsignedIntegerRange();
+
+	/**
+	 * Returns a new object of class '<em>Property Filler Unsigned Integer Random</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Property Filler Unsigned Integer Random</em>'.
+	 * @generated
+	 */
+	PropertyFillerUnsignedIntegerRandom createPropertyFillerUnsignedIntegerRandom();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	DatamartDSLPackage getDatamartDSLPackage();
+
+} //DatamartDSLFactory
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLPackage.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLPackage.java
new file mode 100644
index 0000000..fee30ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLPackage.java
@@ -0,0 +1,10250 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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.datamartdsl.DatamartDSLFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='datamart' modelName='DatamartDSL' prefix='DatamartDSL' updateClasspath='false' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License v1.0 \r\n which accompanies this distribution, and is available at \r\n http://www.eclipse.org/legal/epl-v10.html \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tChristophe Loetz (Loetz GmbH&Co.KG) - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='datamartdsl'"
+ * @generated
+ */
+public interface DatamartDSLPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "datamartdsl";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/xtext/datamartdsl/DatamartDSL";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "datamartdsl";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DatamartDSLPackage eINSTANCE = org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartModelImpl <em>Datamart Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartModelImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartModel()
+	 * @generated
+	 */
+	int DATAMART_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MODEL__PACKAGES = 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Datamart Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MODEL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartLazyResolverImpl <em>Datamart Lazy Resolver</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartLazyResolverImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartLazyResolver()
+	 * @generated
+	 */
+	int DATAMART_LAZY_RESOLVER = 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_LAZY_RESOLVER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = 0;
+
+	/**
+	 * The number of operations of the '<em>Datamart Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_LAZY_RESOLVER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartBaseImpl <em>Datamart Base</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartBaseImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartBase()
+	 * @generated
+	 */
+	int DATAMART_BASE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_BASE__NAME = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_BASE_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_BASE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_BASE_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPackageImpl <em>Datamart Package</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPackageImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartPackage()
+	 * @generated
+	 */
+	int DATAMART_PACKAGE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_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 DATAMART_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
+
+	/**
+	 * The feature id for the '<em><b>Definitions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PACKAGE__DEFINITIONS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PACKAGE_FEATURE_COUNT = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PACKAGE_OPERATION_COUNT = OSBPTypesPackage.LPACKAGE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl <em>Datamart Definition</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartDefinition()
+	 * @generated
+	 */
+	int DATAMART_DEFINITION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION__NAME = DATAMART_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION__DESCRIPTION = DATAMART_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Description Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION__DESCRIPTION_VALUE = DATAMART_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION__SOURCE = DATAMART_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Roles</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION__ROLES = DATAMART_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Definition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION_FEATURE_COUNT = DATAMART_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Definition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINITION_OPERATION_COUNT = DATAMART_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSource <em>Datamart Source</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSource
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSource()
+	 * @generated
+	 */
+	int DATAMART_SOURCE = 5;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Source</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SOURCE_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Source</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SOURCE_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartRoleImpl <em>Datamart Role</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartRoleImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartRole()
+	 * @generated
+	 */
+	int DATAMART_ROLE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Assigned Role</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ROLE__ASSIGNED_ROLE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Role</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ROLE_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ROLE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Role</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ROLE_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl <em>Datamart Task</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartTask()
+	 * @generated
+	 */
+	int DATAMART_TASK = 7;
+
+	/**
+	 * The feature id for the '<em><b>Task Query</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK__TASK_QUERY = DATAMART_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Columns</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK__COLUMNS = DATAMART_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Conditions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK__CONDITIONS = DATAMART_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Task</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FEATURE_COUNT = DATAMART_SOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Task</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_OPERATION_COUNT = DATAMART_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl <em>Datamart Cube</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartCube()
+	 * @generated
+	 */
+	int DATAMART_CUBE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Non Empty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE__NON_EMPTY = DATAMART_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cube Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE__CUBE_REF = DATAMART_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Axisslicer</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE__AXISSLICER = DATAMART_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Cube</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE_FEATURE_COUNT = DATAMART_SOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Cube</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE_OPERATION_COUNT = DATAMART_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl <em>Datamart Entity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartEntity()
+	 * @generated
+	 */
+	int DATAMART_ENTITY = 9;
+
+	/**
+	 * The feature id for the '<em><b>Entity Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__ENTITY_REF = DATAMART_SOURCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Navigations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__NAVIGATIONS = DATAMART_SOURCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__PROPERTIES = DATAMART_SOURCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Conditions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__CONDITIONS = DATAMART_SOURCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Ordering</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__ORDERING = DATAMART_SOURCE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Filler Min Count Rows</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS = DATAMART_SOURCE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Filler Max Count Rows</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS = DATAMART_SOURCE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Tracking</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__TRACKING = DATAMART_SOURCE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Filler Datas</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY__FILLER_DATAS = DATAMART_SOURCE_FEATURE_COUNT + 8;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY_FEATURE_COUNT = DATAMART_SOURCE_FEATURE_COUNT + 9;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_SOURCE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ENTITY_OPERATION_COUNT = DATAMART_SOURCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartElement <em>Datamart Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartElement
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartElement()
+	 * @generated
+	 */
+	int DATAMART_ELEMENT = 38;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ELEMENT_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ELEMENT_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl <em>Expression</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getExpression()
+	 * @generated
+	 */
+	int EXPRESSION = 16;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__FILTERED = DATAMART_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__SELECTED = DATAMART_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__OPTIONAL = DATAMART_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__NUMBER_VALUE = DATAMART_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__STRING_VALUE = DATAMART_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__VALUE = DATAMART_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__HIERARCHY = DATAMART_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__AGGREGATION = DATAMART_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__FUNCTION = DATAMART_ELEMENT_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__SET = DATAMART_ELEMENT_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION__SET_FUNCTION = DATAMART_ELEMENT_FEATURE_COUNT + 10;
+
+	/**
+	 * The number of structural features of the '<em>Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION_FEATURE_COUNT = DATAMART_ELEMENT_FEATURE_COUNT + 11;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_ELEMENT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXPRESSION_OPERATION_COUNT = DATAMART_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartColumnImpl <em>Datamart Column</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartColumnImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartColumn()
+	 * @generated
+	 */
+	int DATAMART_COLUMN = 10;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Column Ref</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN__COLUMN_REF = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Column</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Column</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_COLUMN_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskFilterImpl <em>Datamart Task Filter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskFilterImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartTaskFilter()
+	 * @generated
+	 */
+	int DATAMART_TASK_FILTER = 11;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Filter Ref</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER__FILTER_REF = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Task Filter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Task Filter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_TASK_FILTER_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartNavigationImpl <em>Datamart Navigation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartNavigationImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartNavigation()
+	 * @generated
+	 */
+	int DATAMART_NAVIGATION = 12;
+
+	/**
+	 * The feature id for the '<em><b>Join Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_NAVIGATION__JOIN_REF = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Datamart Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_NAVIGATION__DATAMART_ENTITY = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Navigation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_NAVIGATION_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_NAVIGATION___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Navigation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_NAVIGATION_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOwnerImpl <em>Datamart Owner</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOwnerImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartOwner()
+	 * @generated
+	 */
+	int DATAMART_OWNER = 13;
+
+	/**
+	 * The feature id for the '<em><b>Join Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_OWNER__JOIN_REF = DATAMART_NAVIGATION__JOIN_REF;
+
+	/**
+	 * The feature id for the '<em><b>Datamart Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_OWNER__DATAMART_ENTITY = DATAMART_NAVIGATION__DATAMART_ENTITY;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Owner</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_OWNER_FEATURE_COUNT = DATAMART_NAVIGATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_OWNER___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_NAVIGATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Owner</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_OWNER_OPERATION_COUNT = DATAMART_NAVIGATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberImpl <em>Datamart Member</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartMember()
+	 * @generated
+	 */
+	int DATAMART_MEMBER = 14;
+
+	/**
+	 * The feature id for the '<em><b>Join Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER__JOIN_REF = DATAMART_NAVIGATION__JOIN_REF;
+
+	/**
+	 * The feature id for the '<em><b>Datamart Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER__DATAMART_ENTITY = DATAMART_NAVIGATION__DATAMART_ENTITY;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Member</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_FEATURE_COUNT = DATAMART_NAVIGATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_NAVIGATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Member</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_OPERATION_COUNT = DATAMART_NAVIGATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl <em>Datamart Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartProperty()
+	 * @generated
+	 */
+	int DATAMART_PROPERTY = 15;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__FILTERED = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__SELECTED = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__OPTIONAL = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__NUMBER_VALUE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__STRING_VALUE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__VALUE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__HIERARCHY = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__AGGREGATION = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__FUNCTION = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__SET = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__SET_FUNCTION = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Aggregated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__AGGREGATED = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Scaled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__SCALED = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 12;
+
+	/**
+	 * The feature id for the '<em><b>Placed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__PLACED = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 13;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__AXIS = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 14;
+
+	/**
+	 * The feature id for the '<em><b>Aggregate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__AGGREGATE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 15;
+
+	/**
+	 * The feature id for the '<em><b>Scale</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__SCALE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 16;
+
+	/**
+	 * The feature id for the '<em><b>Property Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY__PROPERTY_REF = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 17;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 18;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PROPERTY_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartConditionImpl <em>Datamart Condition</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartConditionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartCondition()
+	 * @generated
+	 */
+	int DATAMART_CONDITION = 17;
+
+	/**
+	 * The feature id for the '<em><b>Condition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CONDITION__CONDITION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Condition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CONDITION_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Datamart Condition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CONDITION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOrderImpl <em>Datamart Order</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOrderImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartOrder()
+	 * @generated
+	 */
+	int DATAMART_ORDER = 18;
+
+	/**
+	 * The feature id for the '<em><b>Order By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ORDER__ORDER_BY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Order How</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ORDER__ORDER_HOW = 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Order</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ORDER_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Datamart Order</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_ORDER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement <em>Datamart Cube Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartCubeElement()
+	 * @generated
+	 */
+	int DATAMART_CUBE_ELEMENT = 19;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Cube Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE_ELEMENT_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Datamart Cube Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_CUBE_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefineDerivedMeasureImpl <em>Datamart Define Derived Measure</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefineDerivedMeasureImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartDefineDerivedMeasure()
+	 * @generated
+	 */
+	int DATAMART_DEFINE_DERIVED_MEASURE = 20;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINE_DERIVED_MEASURE__NAME = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Derived Element</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Define Derived Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINE_DERIVED_MEASURE_FEATURE_COUNT = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINE_DERIVED_MEASURE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_CUBE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Datamart Define Derived Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DEFINE_DERIVED_MEASURE_OPERATION_COUNT = DATAMART_CUBE_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface <em>Datamart Function Interface</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartFunctionInterface()
+	 * @generated
+	 */
+	int DATAMART_FUNCTION_INTERFACE = 21;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Function Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_INTERFACE_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Datamart Function Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_INTERFACE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionImpl <em>Datamart Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartFunction()
+	 * @generated
+	 */
+	int DATAMART_FUNCTION = 22;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION__FUNCTION = DATAMART_FUNCTION_INTERFACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_FEATURE_COUNT = DATAMART_FUNCTION_INTERFACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Datamart Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_OPERATION_COUNT = DATAMART_FUNCTION_INTERFACE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartParameterFunctionImpl <em>Datamart Parameter Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartParameterFunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartParameterFunction()
+	 * @generated
+	 */
+	int DATAMART_PARAMETER_FUNCTION = 23;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PARAMETER_FUNCTION__FUNCTION = DATAMART_FUNCTION_INTERFACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PARAMETER_FUNCTION__PARAMETER = DATAMART_FUNCTION_INTERFACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Parameter Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PARAMETER_FUNCTION_FEATURE_COUNT = DATAMART_FUNCTION_INTERFACE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Datamart Parameter Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_PARAMETER_FUNCTION_OPERATION_COUNT = DATAMART_FUNCTION_INTERFACE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionIntParameterImpl <em>Datamart Function Int Parameter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionIntParameterImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartFunctionIntParameter()
+	 * @generated
+	 */
+	int DATAMART_FUNCTION_INT_PARAMETER = 24;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_INT_PARAMETER__VALUE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Function Int Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_INT_PARAMETER_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Datamart Function Int Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_FUNCTION_INT_PARAMETER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface <em>Datamart Set Function Interface</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetFunctionInterface()
+	 * @generated
+	 */
+	int DATAMART_SET_FUNCTION_INTERFACE = 25;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Set Function Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_FUNCTION_INTERFACE_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Datamart Set Function Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_FUNCTION_INTERFACE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetFunctionImpl <em>Datamart Set Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetFunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetFunction()
+	 * @generated
+	 */
+	int DATAMART_SET_FUNCTION = 26;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_FUNCTION__SET_FUNCTION = DATAMART_SET_FUNCTION_INTERFACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Set Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_FUNCTION_FEATURE_COUNT = DATAMART_SET_FUNCTION_INTERFACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Datamart Set Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_FUNCTION_OPERATION_COUNT = DATAMART_SET_FUNCTION_INTERFACE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetParameterFunctionImpl <em>Datamart Set Parameter Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetParameterFunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetParameterFunction()
+	 * @generated
+	 */
+	int DATAMART_SET_PARAMETER_FUNCTION = 27;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION = DATAMART_SET_FUNCTION_INTERFACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_PARAMETER_FUNCTION__PARAMETER = DATAMART_SET_FUNCTION_INTERFACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Set Parameter Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_PARAMETER_FUNCTION_FEATURE_COUNT = DATAMART_SET_FUNCTION_INTERFACE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Datamart Set Parameter Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_PARAMETER_FUNCTION_OPERATION_COUNT = DATAMART_SET_FUNCTION_INTERFACE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface <em>Datamart Aggregation Function Interface</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregationFunctionInterface()
+	 * @generated
+	 */
+	int DATAMART_AGGREGATION_FUNCTION_INTERFACE = 28;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Aggregation Function Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Datamart Aggregation Function Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FUNCTION_INTERFACE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationFunctionImpl <em>Datamart Set Aggregation Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationFunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetAggregationFunction()
+	 * @generated
+	 */
+	int DATAMART_SET_AGGREGATION_FUNCTION = 29;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION = DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER = DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Set Aggregation Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION_FUNCTION_FEATURE_COUNT = DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Datamart Set Aggregation Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION_FUNCTION_OPERATION_COUNT = DATAMART_AGGREGATION_FUNCTION_INTERFACE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationExpressionImpl <em>Datamart Aggregation Expression</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationExpressionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregationExpression()
+	 * @generated
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION = 30;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Aggregation Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Aggregation Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_EXPRESSION_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetTupleImpl <em>Datamart Set Tuple</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetTupleImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetTuple()
+	 * @generated
+	 */
+	int DATAMART_SET_TUPLE = 31;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Set Tuple</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Set Tuple</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_TUPLE_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationImpl <em>Datamart Set Aggregation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetAggregation()
+	 * @generated
+	 */
+	int DATAMART_SET_AGGREGATION = 32;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__FILTERED = DATAMART_AGGREGATION_EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__SELECTED = DATAMART_AGGREGATION_EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__OPTIONAL = DATAMART_AGGREGATION_EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__NUMBER_VALUE = DATAMART_AGGREGATION_EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__STRING_VALUE = DATAMART_AGGREGATION_EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__VALUE = DATAMART_AGGREGATION_EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__HIERARCHY = DATAMART_AGGREGATION_EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__AGGREGATION = DATAMART_AGGREGATION_EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__FUNCTION = DATAMART_AGGREGATION_EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__SET = DATAMART_AGGREGATION_EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__SET_FUNCTION = DATAMART_AGGREGATION_EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__LEFT = DATAMART_AGGREGATION_EXPRESSION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION__RIGHT = DATAMART_AGGREGATION_EXPRESSION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Set Aggregation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION_FEATURE_COUNT = DATAMART_AGGREGATION_EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_AGGREGATION_EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Set Aggregation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SET_AGGREGATION_OPERATION_COUNT = DATAMART_AGGREGATION_EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationImpl <em>Datamart Aggregation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregation()
+	 * @generated
+	 */
+	int DATAMART_AGGREGATION = 33;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__FILTERED = DATAMART_AGGREGATION_EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__SELECTED = DATAMART_AGGREGATION_EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__OPTIONAL = DATAMART_AGGREGATION_EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__NUMBER_VALUE = DATAMART_AGGREGATION_EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__STRING_VALUE = DATAMART_AGGREGATION_EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__VALUE = DATAMART_AGGREGATION_EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__HIERARCHY = DATAMART_AGGREGATION_EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__AGGREGATION = DATAMART_AGGREGATION_EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__FUNCTION = DATAMART_AGGREGATION_EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__SET = DATAMART_AGGREGATION_EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__SET_FUNCTION = DATAMART_AGGREGATION_EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__LEFT = DATAMART_AGGREGATION_EXPRESSION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION__RIGHT = DATAMART_AGGREGATION_EXPRESSION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Aggregation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FEATURE_COUNT = DATAMART_AGGREGATION_EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_AGGREGATION_EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Aggregation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_OPERATION_COUNT = DATAMART_AGGREGATION_EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberTupleImpl <em>Datamart Member Tuple</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberTupleImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartMemberTuple()
+	 * @generated
+	 */
+	int DATAMART_MEMBER_TUPLE = 34;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__FILTERED = DATAMART_AGGREGATION_EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__SELECTED = DATAMART_AGGREGATION_EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__OPTIONAL = DATAMART_AGGREGATION_EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__NUMBER_VALUE = DATAMART_AGGREGATION_EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__STRING_VALUE = DATAMART_AGGREGATION_EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__VALUE = DATAMART_AGGREGATION_EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__HIERARCHY = DATAMART_AGGREGATION_EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__AGGREGATION = DATAMART_AGGREGATION_EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__FUNCTION = DATAMART_AGGREGATION_EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__SET = DATAMART_AGGREGATION_EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__SET_FUNCTION = DATAMART_AGGREGATION_EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__LEFT = DATAMART_AGGREGATION_EXPRESSION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE__RIGHT = DATAMART_AGGREGATION_EXPRESSION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Member Tuple</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE_FEATURE_COUNT = DATAMART_AGGREGATION_EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_AGGREGATION_EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Member Tuple</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEMBER_TUPLE_OPERATION_COUNT = DATAMART_AGGREGATION_EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationFunctionImpl <em>Datamart Aggregation Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationFunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregationFunction()
+	 * @generated
+	 */
+	int DATAMART_AGGREGATION_FUNCTION = 35;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FUNCTION__AGGREGATION = DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FUNCTION__PARAMETER = DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Aggregation Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FUNCTION_FEATURE_COUNT = DATAMART_AGGREGATION_FUNCTION_INTERFACE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Datamart Aggregation Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AGGREGATION_FUNCTION_OPERATION_COUNT = DATAMART_AGGREGATION_FUNCTION_INTERFACE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSlicerImpl <em>Datamart Slicer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSlicerImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSlicer()
+	 * @generated
+	 */
+	int DATAMART_SLICER = 36;
+
+	/**
+	 * The feature id for the '<em><b>Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SLICER__ELEMENT = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Slicer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SLICER_FEATURE_COUNT = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Datamart Slicer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_SLICER_OPERATION_COUNT = DATAMART_CUBE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAxisImpl <em>Datamart Axis</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAxisImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAxis()
+	 * @generated
+	 */
+	int DATAMART_AXIS = 37;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AXIS__NAME = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AXIS__ELEMENTS = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Axis</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AXIS_FEATURE_COUNT = DATAMART_CUBE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Datamart Axis</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_AXIS_OPERATION_COUNT = DATAMART_CUBE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl <em>Datamart Derived Measure</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartDerivedMeasure()
+	 * @generated
+	 */
+	int DATAMART_DERIVED_MEASURE = 39;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Scaled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__SCALED = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Scale</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__SCALE = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Derived Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE__DERIVED_REF = EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Derived Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Derived Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_DERIVED_MEASURE_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl <em>Datamart Measure</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartMeasure()
+	 * @generated
+	 */
+	int DATAMART_MEASURE = 40;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Scaled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__SCALED = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Scale</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__SCALE = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Measure Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE__MEASURE_REF = EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_MEASURE_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl <em>Datamart Hierarchy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartHierarchy()
+	 * @generated
+	 */
+	int DATAMART_HIERARCHY = 41;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Default Member</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__DEFAULT_MEMBER = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>All Member</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__ALL_MEMBER = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>All Levels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__ALL_LEVELS = EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>All</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__ALL = EXPRESSION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Except</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__EXCEPT = EXPRESSION_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__ORDERED = EXPRESSION_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Descending</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__DESCENDING = EXPRESSION_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__HIERARCHY_REF = EXPRESSION_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Level Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__LEVEL_REF = EXPRESSION_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Except Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__EXCEPT_REF = EXPRESSION_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Order Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY__ORDER_REF = EXPRESSION_FEATURE_COUNT + 10;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Hierarchy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 11;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Hierarchy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_HIERARCHY_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.CalculationImpl <em>Calculation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.CalculationImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getCalculation()
+	 * @generated
+	 */
+	int CALCULATION = 42;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__FILTERED = EXPRESSION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__SELECTED = EXPRESSION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__OPTIONAL = EXPRESSION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__NUMBER_VALUE = EXPRESSION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__STRING_VALUE = EXPRESSION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__VALUE = EXPRESSION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__HIERARCHY = EXPRESSION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__AGGREGATION = EXPRESSION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__FUNCTION = EXPRESSION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__SET = EXPRESSION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__SET_FUNCTION = EXPRESSION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__LEFT = EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION__RIGHT = EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Calculation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT = EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Calculation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALCULATION_OPERATION_COUNT = EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartReferenceImpl <em>Datamart Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartReferenceImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartReference()
+	 * @generated
+	 */
+	int DATAMART_REFERENCE = 43;
+
+	/**
+	 * The feature id for the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_REFERENCE__REF = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Datamart Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_REFERENCE_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_REFERENCE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Datamart Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATAMART_REFERENCE_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.AdditionImpl <em>Addition</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.AdditionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getAddition()
+	 * @generated
+	 */
+	int ADDITION = 44;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Addition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Addition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADDITION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DivisionImpl <em>Division</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DivisionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDivision()
+	 * @generated
+	 */
+	int DIVISION = 45;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Division</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Division</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIVISION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.MultiplicationImpl <em>Multiplication</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.MultiplicationImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getMultiplication()
+	 * @generated
+	 */
+	int MULTIPLICATION = 46;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Multiplication</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Multiplication</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIPLICATION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.SubtractionImpl <em>Subtraction</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.SubtractionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSubtraction()
+	 * @generated
+	 */
+	int SUBTRACTION = 47;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Subtraction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Subtraction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUBTRACTION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.ConjunctionImpl <em>Conjunction</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.ConjunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getConjunction()
+	 * @generated
+	 */
+	int CONJUNCTION = 48;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Conjunction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Conjunction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONJUNCTION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DisjunctionImpl <em>Disjunction</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DisjunctionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDisjunction()
+	 * @generated
+	 */
+	int DISJUNCTION = 49;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Disjunction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Disjunction</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISJUNCTION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.ConditionalExpressionImpl <em>Conditional Expression</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.ConditionalExpressionImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getConditionalExpression()
+	 * @generated
+	 */
+	int CONDITIONAL_EXPRESSION = 50;
+
+	/**
+	 * The feature id for the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__FILTERED = CALCULATION__FILTERED;
+
+	/**
+	 * The feature id for the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__SELECTED = CALCULATION__SELECTED;
+
+	/**
+	 * The feature id for the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__OPTIONAL = CALCULATION__OPTIONAL;
+
+	/**
+	 * The feature id for the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__NUMBER_VALUE = CALCULATION__NUMBER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__STRING_VALUE = CALCULATION__STRING_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__VALUE = CALCULATION__VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__HIERARCHY = CALCULATION__HIERARCHY;
+
+	/**
+	 * The feature id for the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__AGGREGATION = CALCULATION__AGGREGATION;
+
+	/**
+	 * The feature id for the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__FUNCTION = CALCULATION__FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__SET = CALCULATION__SET;
+
+	/**
+	 * The feature id for the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__SET_FUNCTION = CALCULATION__SET_FUNCTION;
+
+	/**
+	 * The feature id for the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__LEFT = CALCULATION__LEFT;
+
+	/**
+	 * The feature id for the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__RIGHT = CALCULATION__RIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Operator</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION__OPERATOR = CALCULATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Conditional Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION_FEATURE_COUNT = CALCULATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION___ERESOLVE_PROXY__INTERNALEOBJECT = CALCULATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Conditional Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_EXPRESSION_OPERATION_COUNT = CALCULATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.EventBrokerDataMartImpl <em>Event Broker Data Mart</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.EventBrokerDataMartImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getEventBrokerDataMart()
+	 * @generated
+	 */
+	int EVENT_BROKER_DATA_MART = 51;
+
+	/**
+	 * The feature id for the '<em><b>Filter</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_BROKER_DATA_MART__FILTER = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Datamart Def</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_BROKER_DATA_MART__DATAMART_DEF = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Event Broker Data Mart</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_BROKER_DATA_MART_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_BROKER_DATA_MART___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Event Broker Data Mart</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_BROKER_DATA_MART_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDataImpl <em>Property Filler Data</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDataImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerData()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_DATA = 52;
+
+	/**
+	 * The feature id for the '<em><b>Property Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATA__PROPERTY_REF = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Filler Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATA__FILLER_TYPE = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Data</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATA_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATA___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Data</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATA_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTypeImpl <em>Property Filler Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTypeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerType()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_TYPE = 53;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TYPE_FEATURE_COUNT = DATAMART_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TYPE_OPERATION_COUNT = DATAMART_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateTypeImpl <em>Property Filler Date Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateTypeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDateType()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_DATE_TYPE = 54;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Date Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT = PROPERTY_FILLER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Date Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_TYPE_OPERATION_COUNT = PROPERTY_FILLER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDoubleTypeImpl <em>Property Filler Double Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDoubleTypeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDoubleType()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_DOUBLE_TYPE = 55;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Double Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT = PROPERTY_FILLER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DOUBLE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Double Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DOUBLE_TYPE_OPERATION_COUNT = PROPERTY_FILLER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerIntegerTypeImpl <em>Property Filler Integer Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerIntegerTypeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerIntegerType()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_INTEGER_TYPE = 56;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Integer Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT = PROPERTY_FILLER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_INTEGER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Integer Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_INTEGER_TYPE_OPERATION_COUNT = PROPERTY_FILLER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextTypeImpl <em>Property Filler Text Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextTypeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextType()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_TEXT_TYPE = 57;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Text Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT = PROPERTY_FILLER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Text Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_TYPE_OPERATION_COUNT = PROPERTY_FILLER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateFutureImpl <em>Property Filler Date Future</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateFutureImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDateFuture()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_DATE_FUTURE = 58;
+
+	/**
+	 * The feature id for the '<em><b>Date Future Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Date Future</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_FUTURE_FEATURE_COUNT = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_FUTURE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DATE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Date Future</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_FUTURE_OPERATION_COUNT = PROPERTY_FILLER_DATE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDatePastImpl <em>Property Filler Date Past</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDatePastImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDatePast()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_DATE_PAST = 59;
+
+	/**
+	 * The feature id for the '<em><b>Date Past Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Date Past</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_PAST_FEATURE_COUNT = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_PAST___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DATE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Date Past</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_PAST_OPERATION_COUNT = PROPERTY_FILLER_DATE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateRangeImpl <em>Property Filler Date Range</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateRangeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDateRange()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_DATE_RANGE = 60;
+
+	/**
+	 * The feature id for the '<em><b>Date Begin Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Date End Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Date Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_RANGE_FEATURE_COUNT = PROPERTY_FILLER_DATE_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_RANGE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DATE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Date Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_DATE_RANGE_OPERATION_COUNT = PROPERTY_FILLER_DATE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl <em>Property Filler Signed Double Range</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE = 61;
+
+	/**
+	 * The feature id for the '<em><b>Decimals</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Signed Double Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE_FEATURE_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DOUBLE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Signed Double Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANGE_OPERATION_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRandomImpl <em>Property Filler Signed Double Random</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRandomImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedDoubleRandom()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM = 62;
+
+	/**
+	 * The feature id for the '<em><b>Items</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Signed Double Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM_FEATURE_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DOUBLE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Signed Double Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM_OPERATION_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl <em>Property Filler Signed Integer Range</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedIntegerRange()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE = 63;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Signed Integer Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE_FEATURE_COUNT = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_INTEGER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Signed Integer Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANGE_OPERATION_COUNT = PROPERTY_FILLER_INTEGER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRandomImpl <em>Property Filler Signed Integer Random</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRandomImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedIntegerRandom()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANDOM = 64;
+
+	/**
+	 * The feature id for the '<em><b>Items</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Signed Integer Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANDOM_FEATURE_COUNT = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANDOM___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_INTEGER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Signed Integer Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_SIGNED_INTEGER_RANDOM_OPERATION_COUNT = PROPERTY_FILLER_INTEGER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextRandomImpl <em>Property Filler Text Random</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextRandomImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextRandom()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_TEXT_RANDOM = 65;
+
+	/**
+	 * The feature id for the '<em><b>Items</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_RANDOM__ITEMS = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Text Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_RANDOM_FEATURE_COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_RANDOM___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TEXT_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Text Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_RANDOM_OPERATION_COUNT = PROPERTY_FILLER_TEXT_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextParagraphsImpl <em>Property Filler Text Paragraphs</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextParagraphsImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextParagraphs()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_TEXT_PARAGRAPHS = 66;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Text Paragraphs</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_PARAGRAPHS_FEATURE_COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_PARAGRAPHS___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TEXT_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Text Paragraphs</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_PARAGRAPHS_OPERATION_COUNT = PROPERTY_FILLER_TEXT_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextSentencesImpl <em>Property Filler Text Sentences</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextSentencesImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextSentences()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_TEXT_SENTENCES = 67;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_SENTENCES__COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Text Sentences</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_SENTENCES_FEATURE_COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_SENTENCES___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TEXT_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Text Sentences</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_SENTENCES_OPERATION_COUNT = PROPERTY_FILLER_TEXT_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextWordsImpl <em>Property Filler Text Words</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextWordsImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextWords()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_TEXT_WORDS = 68;
+
+	/**
+	 * The feature id for the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_WORDS__COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Text Words</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_WORDS_FEATURE_COUNT = PROPERTY_FILLER_TEXT_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_WORDS___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_TEXT_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Text Words</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_TEXT_WORDS_OPERATION_COUNT = PROPERTY_FILLER_TEXT_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl <em>Property Filler Unsigned Double Range</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE = 69;
+
+	/**
+	 * The feature id for the '<em><b>Decimals</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Unsigned Double Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE_FEATURE_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DOUBLE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Unsigned Double Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE_OPERATION_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRandomImpl <em>Property Filler Unsigned Double Random</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRandomImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedDoubleRandom()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM = 70;
+
+	/**
+	 * The feature id for the '<em><b>Items</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Unsigned Double Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM_FEATURE_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_DOUBLE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Unsigned Double Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM_OPERATION_COUNT = PROPERTY_FILLER_DOUBLE_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl <em>Property Filler Unsigned Integer Range</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedIntegerRange()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE = 71;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Unsigned Integer Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE_FEATURE_COUNT = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_INTEGER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Unsigned Integer Range</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE_OPERATION_COUNT = PROPERTY_FILLER_INTEGER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRandomImpl <em>Property Filler Unsigned Integer Random</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRandomImpl
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedIntegerRandom()
+	 * @generated
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM = 72;
+
+	/**
+	 * The feature id for the '<em><b>Items</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Filler Unsigned Integer Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM_FEATURE_COUNT = PROPERTY_FILLER_INTEGER_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM___ERESOLVE_PROXY__INTERNALEOBJECT = PROPERTY_FILLER_INTEGER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Property Filler Unsigned Integer Random</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM_OPERATION_COUNT = PROPERTY_FILLER_INTEGER_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.AxisEnum <em>Axis Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getAxisEnum()
+	 * @generated
+	 */
+	int AXIS_ENUM = 73;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.FunctionEnum <em>Function Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.FunctionEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getFunctionEnum()
+	 * @generated
+	 */
+	int FUNCTION_ENUM = 74;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum <em>Parameter Function Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getParameterFunctionEnum()
+	 * @generated
+	 */
+	int PARAMETER_FUNCTION_ENUM = 75;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum <em>Set Function Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSetFunctionEnum()
+	 * @generated
+	 */
+	int SET_FUNCTION_ENUM = 76;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum <em>Set Parameter Function Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSetParameterFunctionEnum()
+	 * @generated
+	 */
+	int SET_PARAMETER_FUNCTION_ENUM = 77;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum <em>Set Aggregation Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSetAggregationEnum()
+	 * @generated
+	 */
+	int SET_AGGREGATION_ENUM = 78;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.AggregationEnum <em>Aggregation Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AggregationEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getAggregationEnum()
+	 * @generated
+	 */
+	int AGGREGATION_ENUM = 79;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.OperatorEnum <em>Operator Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OperatorEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getOperatorEnum()
+	 * @generated
+	 */
+	int OPERATOR_ENUM = 80;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum <em>Sql Aggregation Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSqlAggregationEnum()
+	 * @generated
+	 */
+	int SQL_AGGREGATION_ENUM = 81;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum <em>Value Scale Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getValueScaleEnum()
+	 * @generated
+	 */
+	int VALUE_SCALE_ENUM = 82;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum <em>Task Query Topic Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getTaskQueryTopicEnum()
+	 * @generated
+	 */
+	int TASK_QUERY_TOPIC_ENUM = 83;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum <em>Task Query Column Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getTaskQueryColumnEnum()
+	 * @generated
+	 */
+	int TASK_QUERY_COLUMN_ENUM = 84;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum <em>Task Filter Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getTaskFilterEnum()
+	 * @generated
+	 */
+	int TASK_FILTER_ENUM = 85;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.datamartdsl.OrderEnum <em>Order Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OrderEnum
+	 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getOrderEnum()
+	 * @generated
+	 */
+	int ORDER_ENUM = 86;
+
+	/**
+	 * 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.datamartdsl.impl.DatamartDSLPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 87;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartModel <em>Datamart Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Model</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartModel
+	 * @generated
+	 */
+	EClass getDatamartModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartModel#getPackages <em>Packages</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Packages</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartModel#getPackages()
+	 * @see #getDatamartModel()
+	 * @generated
+	 */
+	EReference getDatamartModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver <em>Datamart Lazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Lazy Resolver</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver
+	 * @generated
+	 */
+	EClass getDatamartLazyResolver();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver#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.datamartdsl.DatamartLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject)
+	 * @generated
+	 */
+	EOperation getDatamartLazyResolver__EResolveProxy__InternalEObject();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartBase <em>Datamart Base</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Base</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartBase
+	 * @generated
+	 */
+	EClass getDatamartBase();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartBase#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.datamartdsl.DatamartBase#getName()
+	 * @see #getDatamartBase()
+	 * @generated
+	 */
+	EAttribute getDatamartBase_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartPackage <em>Datamart Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Package</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartPackage
+	 * @generated
+	 */
+	EClass getDatamartPackage();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartPackage#getDefinitions <em>Definitions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Definitions</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartPackage#getDefinitions()
+	 * @see #getDatamartPackage()
+	 * @generated
+	 */
+	EReference getDatamartPackage_Definitions();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition <em>Datamart Definition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Definition</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition
+	 * @generated
+	 */
+	EClass getDatamartDefinition();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#isDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#isDescription()
+	 * @see #getDatamartDefinition()
+	 * @generated
+	 */
+	EAttribute getDatamartDefinition_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getDescriptionValue <em>Description Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description Value</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getDescriptionValue()
+	 * @see #getDatamartDefinition()
+	 * @generated
+	 */
+	EAttribute getDatamartDefinition_DescriptionValue();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getSource <em>Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Source</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getSource()
+	 * @see #getDatamartDefinition()
+	 * @generated
+	 */
+	EReference getDatamartDefinition_Source();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getRoles <em>Roles</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Roles</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getRoles()
+	 * @see #getDatamartDefinition()
+	 * @generated
+	 */
+	EReference getDatamartDefinition_Roles();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSource <em>Datamart Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Source</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSource
+	 * @generated
+	 */
+	EClass getDatamartSource();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartRole <em>Datamart Role</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Role</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartRole
+	 * @generated
+	 */
+	EClass getDatamartRole();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartRole#getAssignedRole <em>Assigned Role</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Assigned Role</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartRole#getAssignedRole()
+	 * @see #getDatamartRole()
+	 * @generated
+	 */
+	EReference getDatamartRole_AssignedRole();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask <em>Datamart Task</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Task</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+	 * @generated
+	 */
+	EClass getDatamartTask();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getTaskQuery <em>Task Query</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Task Query</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getTaskQuery()
+	 * @see #getDatamartTask()
+	 * @generated
+	 */
+	EAttribute getDatamartTask_TaskQuery();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getColumns <em>Columns</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Columns</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getColumns()
+	 * @see #getDatamartTask()
+	 * @generated
+	 */
+	EReference getDatamartTask_Columns();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getConditions <em>Conditions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Conditions</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getConditions()
+	 * @see #getDatamartTask()
+	 * @generated
+	 */
+	EReference getDatamartTask_Conditions();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube <em>Datamart Cube</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Cube</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+	 * @generated
+	 */
+	EClass getDatamartCube();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#isNonEmpty <em>Non Empty</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Non Empty</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCube#isNonEmpty()
+	 * @see #getDatamartCube()
+	 * @generated
+	 */
+	EAttribute getDatamartCube_NonEmpty();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getCubeRef <em>Cube Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Cube Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getCubeRef()
+	 * @see #getDatamartCube()
+	 * @generated
+	 */
+	EReference getDatamartCube_CubeRef();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getAxisslicer <em>Axisslicer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Axisslicer</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCube#getAxisslicer()
+	 * @see #getDatamartCube()
+	 * @generated
+	 */
+	EReference getDatamartCube_Axisslicer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity <em>Datamart Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+	 * @generated
+	 */
+	EClass getDatamartEntity();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getEntityRef <em>Entity Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Entity Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getEntityRef()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EReference getDatamartEntity_EntityRef();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getNavigations <em>Navigations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Navigations</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getNavigations()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EReference getDatamartEntity_Navigations();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#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.datamartdsl.DatamartEntity#getProperties()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EReference getDatamartEntity_Properties();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getConditions <em>Conditions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Conditions</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getConditions()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EReference getDatamartEntity_Conditions();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getOrdering <em>Ordering</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Ordering</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getOrdering()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EReference getDatamartEntity_Ordering();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMinCountRows <em>Filler Min Count Rows</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filler Min Count Rows</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMinCountRows()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EAttribute getDatamartEntity_FillerMinCountRows();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMaxCountRows <em>Filler Max Count Rows</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filler Max Count Rows</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMaxCountRows()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EAttribute getDatamartEntity_FillerMaxCountRows();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#isTracking <em>Tracking</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Tracking</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#isTracking()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EAttribute getDatamartEntity_Tracking();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerDatas <em>Filler Datas</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Filler Datas</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerDatas()
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	EReference getDatamartEntity_FillerDatas();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartColumn <em>Datamart Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Column</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartColumn
+	 * @generated
+	 */
+	EClass getDatamartColumn();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartColumn#getColumnRef <em>Column Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Column Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartColumn#getColumnRef()
+	 * @see #getDatamartColumn()
+	 * @generated
+	 */
+	EAttribute getDatamartColumn_ColumnRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter <em>Datamart Task Filter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Task Filter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter
+	 * @generated
+	 */
+	EClass getDatamartTaskFilter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter#getFilterRef <em>Filter Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filter Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter#getFilterRef()
+	 * @see #getDatamartTaskFilter()
+	 * @generated
+	 */
+	EAttribute getDatamartTaskFilter_FilterRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation <em>Datamart Navigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Navigation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation
+	 * @generated
+	 */
+	EClass getDatamartNavigation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getJoinRef <em>Join Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Join Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getJoinRef()
+	 * @see #getDatamartNavigation()
+	 * @generated
+	 */
+	EReference getDatamartNavigation_JoinRef();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getDatamartEntity <em>Datamart Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Datamart Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getDatamartEntity()
+	 * @see #getDatamartNavigation()
+	 * @generated
+	 */
+	EReference getDatamartNavigation_DatamartEntity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOwner <em>Datamart Owner</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Owner</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+	 * @generated
+	 */
+	EClass getDatamartOwner();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMember <em>Datamart Member</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Member</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+	 * @generated
+	 */
+	EClass getDatamartMember();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty <em>Datamart Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Property</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty
+	 * @generated
+	 */
+	EClass getDatamartProperty();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isAggregated <em>Aggregated</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Aggregated</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isAggregated()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EAttribute getDatamartProperty_Aggregated();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isScaled <em>Scaled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scaled</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isScaled()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EAttribute getDatamartProperty_Scaled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isPlaced <em>Placed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Placed</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isPlaced()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EAttribute getDatamartProperty_Placed();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAxis <em>Axis</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Axis</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAxis()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EAttribute getDatamartProperty_Axis();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAggregate <em>Aggregate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Aggregate</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAggregate()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EAttribute getDatamartProperty_Aggregate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getScale <em>Scale</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scale</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getScale()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EAttribute getDatamartProperty_Scale();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getPropertyRef <em>Property Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Property Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getPropertyRef()
+	 * @see #getDatamartProperty()
+	 * @generated
+	 */
+	EReference getDatamartProperty_PropertyRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Expression <em>Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Expression</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression
+	 * @generated
+	 */
+	EClass getExpression();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isFiltered <em>Filtered</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filtered</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#isFiltered()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EAttribute getExpression_Filtered();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isSelected <em>Selected</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Selected</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#isSelected()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EAttribute getExpression_Selected();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isOptional <em>Optional</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Optional</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#isOptional()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EAttribute getExpression_Optional();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getNumberValue <em>Number Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Number Value</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getNumberValue()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EAttribute getExpression_NumberValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getStringValue <em>String Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>String Value</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getStringValue()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EAttribute getExpression_StringValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getValue()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EAttribute getExpression_Value();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getHierarchy <em>Hierarchy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Hierarchy</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getHierarchy()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EReference getExpression_Hierarchy();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getAggregation <em>Aggregation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Aggregation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getAggregation()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EReference getExpression_Aggregation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getFunction <em>Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getFunction()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EReference getExpression_Function();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getSet <em>Set</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Set</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getSet()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EReference getExpression_Set();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getSetFunction <em>Set Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Set Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Expression#getSetFunction()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	EReference getExpression_SetFunction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition <em>Datamart Condition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Condition</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCondition
+	 * @generated
+	 */
+	EClass getDatamartCondition();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition#getCondition <em>Condition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Condition</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCondition#getCondition()
+	 * @see #getDatamartCondition()
+	 * @generated
+	 */
+	EReference getDatamartCondition_Condition();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder <em>Datamart Order</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Order</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartOrder
+	 * @generated
+	 */
+	EClass getDatamartOrder();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderBy <em>Order By</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Order By</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderBy()
+	 * @see #getDatamartOrder()
+	 * @generated
+	 */
+	EReference getDatamartOrder_OrderBy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderHow <em>Order How</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Order How</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderHow()
+	 * @see #getDatamartOrder()
+	 * @generated
+	 */
+	EAttribute getDatamartOrder_OrderHow();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement <em>Datamart Cube Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Cube Element</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement
+	 * @generated
+	 */
+	EClass getDatamartCubeElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure <em>Datamart Define Derived Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Define Derived Measure</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure
+	 * @generated
+	 */
+	EClass getDatamartDefineDerivedMeasure();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure#getDerivedElement <em>Derived Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Derived Element</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure#getDerivedElement()
+	 * @see #getDatamartDefineDerivedMeasure()
+	 * @generated
+	 */
+	EReference getDatamartDefineDerivedMeasure_DerivedElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface <em>Datamart Function Interface</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Function Interface</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface
+	 * @generated
+	 */
+	EClass getDatamartFunctionInterface();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunction <em>Datamart Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunction
+	 * @generated
+	 */
+	EClass getDatamartFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunction#getFunction <em>Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunction#getFunction()
+	 * @see #getDatamartFunction()
+	 * @generated
+	 */
+	EAttribute getDatamartFunction_Function();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction <em>Datamart Parameter Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Parameter Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction
+	 * @generated
+	 */
+	EClass getDatamartParameterFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getFunction <em>Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getFunction()
+	 * @see #getDatamartParameterFunction()
+	 * @generated
+	 */
+	EAttribute getDatamartParameterFunction_Function();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getParameter <em>Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getParameter()
+	 * @see #getDatamartParameterFunction()
+	 * @generated
+	 */
+	EReference getDatamartParameterFunction_Parameter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter <em>Datamart Function Int Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Function Int Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter
+	 * @generated
+	 */
+	EClass getDatamartFunctionIntParameter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter#getValue()
+	 * @see #getDatamartFunctionIntParameter()
+	 * @generated
+	 */
+	EAttribute getDatamartFunctionIntParameter_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface <em>Datamart Set Function Interface</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Set Function Interface</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface
+	 * @generated
+	 */
+	EClass getDatamartSetFunctionInterface();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction <em>Datamart Set Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Set Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction
+	 * @generated
+	 */
+	EClass getDatamartSetFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction#getSetFunction <em>Set Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Set Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction#getSetFunction()
+	 * @see #getDatamartSetFunction()
+	 * @generated
+	 */
+	EAttribute getDatamartSetFunction_SetFunction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction <em>Datamart Set Parameter Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Set Parameter Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction
+	 * @generated
+	 */
+	EClass getDatamartSetParameterFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getSetFunction <em>Set Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Set Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getSetFunction()
+	 * @see #getDatamartSetParameterFunction()
+	 * @generated
+	 */
+	EAttribute getDatamartSetParameterFunction_SetFunction();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getParameter <em>Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getParameter()
+	 * @see #getDatamartSetParameterFunction()
+	 * @generated
+	 */
+	EReference getDatamartSetParameterFunction_Parameter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface <em>Datamart Aggregation Function Interface</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Aggregation Function Interface</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface
+	 * @generated
+	 */
+	EClass getDatamartAggregationFunctionInterface();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction <em>Datamart Set Aggregation Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Set Aggregation Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction
+	 * @generated
+	 */
+	EClass getDatamartSetAggregationFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getAggregation <em>Aggregation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Aggregation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getAggregation()
+	 * @see #getDatamartSetAggregationFunction()
+	 * @generated
+	 */
+	EAttribute getDatamartSetAggregationFunction_Aggregation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getParameter <em>Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getParameter()
+	 * @see #getDatamartSetAggregationFunction()
+	 * @generated
+	 */
+	EReference getDatamartSetAggregationFunction_Parameter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression <em>Datamart Aggregation Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Aggregation Expression</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression
+	 * @generated
+	 */
+	EClass getDatamartAggregationExpression();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getLeft <em>Left</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Left</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getLeft()
+	 * @see #getDatamartAggregationExpression()
+	 * @generated
+	 */
+	EReference getDatamartAggregationExpression_Left();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getRight <em>Right</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Right</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression#getRight()
+	 * @see #getDatamartAggregationExpression()
+	 * @generated
+	 */
+	EReference getDatamartAggregationExpression_Right();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple <em>Datamart Set Tuple</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Set Tuple</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple
+	 * @generated
+	 */
+	EClass getDatamartSetTuple();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getLeft <em>Left</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Left</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getLeft()
+	 * @see #getDatamartSetTuple()
+	 * @generated
+	 */
+	EReference getDatamartSetTuple_Left();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getRight <em>Right</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Right</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getRight()
+	 * @see #getDatamartSetTuple()
+	 * @generated
+	 */
+	EReference getDatamartSetTuple_Right();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation <em>Datamart Set Aggregation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Set Aggregation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation
+	 * @generated
+	 */
+	EClass getDatamartSetAggregation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation <em>Datamart Aggregation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Aggregation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation
+	 * @generated
+	 */
+	EClass getDatamartAggregation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple <em>Datamart Member Tuple</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Member Tuple</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple
+	 * @generated
+	 */
+	EClass getDatamartMemberTuple();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction <em>Datamart Aggregation Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Aggregation Function</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction
+	 * @generated
+	 */
+	EClass getDatamartAggregationFunction();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getAggregation <em>Aggregation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Aggregation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getAggregation()
+	 * @see #getDatamartAggregationFunction()
+	 * @generated
+	 */
+	EAttribute getDatamartAggregationFunction_Aggregation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getParameter <em>Parameter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Parameter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction#getParameter()
+	 * @see #getDatamartAggregationFunction()
+	 * @generated
+	 */
+	EReference getDatamartAggregationFunction_Parameter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer <em>Datamart Slicer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Slicer</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer
+	 * @generated
+	 */
+	EClass getDatamartSlicer();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer#getElement <em>Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Element</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer#getElement()
+	 * @see #getDatamartSlicer()
+	 * @generated
+	 */
+	EReference getDatamartSlicer_Element();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis <em>Datamart Axis</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Axis</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+	 * @generated
+	 */
+	EClass getDatamartAxis();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis#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.datamartdsl.DatamartAxis#getName()
+	 * @see #getDatamartAxis()
+	 * @generated
+	 */
+	EAttribute getDatamartAxis_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis#getElements <em>Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Elements</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAxis#getElements()
+	 * @see #getDatamartAxis()
+	 * @generated
+	 */
+	EReference getDatamartAxis_Elements();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartElement <em>Datamart Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Element</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartElement
+	 * @generated
+	 */
+	EClass getDatamartElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure <em>Datamart Derived Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Derived Measure</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
+	 * @generated
+	 */
+	EClass getDatamartDerivedMeasure();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#isScaled <em>Scaled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scaled</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#isScaled()
+	 * @see #getDatamartDerivedMeasure()
+	 * @generated
+	 */
+	EAttribute getDatamartDerivedMeasure_Scaled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getScale <em>Scale</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scale</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getScale()
+	 * @see #getDatamartDerivedMeasure()
+	 * @generated
+	 */
+	EAttribute getDatamartDerivedMeasure_Scale();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getDerivedRef <em>Derived Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Derived Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getDerivedRef()
+	 * @see #getDatamartDerivedMeasure()
+	 * @generated
+	 */
+	EReference getDatamartDerivedMeasure_DerivedRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure <em>Datamart Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Measure</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
+	 * @generated
+	 */
+	EClass getDatamartMeasure();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#isScaled <em>Scaled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scaled</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#isScaled()
+	 * @see #getDatamartMeasure()
+	 * @generated
+	 */
+	EAttribute getDatamartMeasure_Scaled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getScale <em>Scale</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scale</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getScale()
+	 * @see #getDatamartMeasure()
+	 * @generated
+	 */
+	EAttribute getDatamartMeasure_Scale();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getMeasureRef <em>Measure Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Measure Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getMeasureRef()
+	 * @see #getDatamartMeasure()
+	 * @generated
+	 */
+	EReference getDatamartMeasure_MeasureRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy <em>Datamart Hierarchy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Hierarchy</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy
+	 * @generated
+	 */
+	EClass getDatamartHierarchy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#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.datamartdsl.DatamartHierarchy#isDefaultMember()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_DefaultMember();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllMember <em>All Member</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>All Member</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllMember()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_AllMember();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllLevels <em>All Levels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>All Levels</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllLevels()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_AllLevels();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAll <em>All</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>All</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAll()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_All();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isExcept <em>Except</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Except</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isExcept()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_Except();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isOrdered <em>Ordered</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ordered</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isOrdered()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_Ordered();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isDescending <em>Descending</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Descending</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isDescending()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EAttribute getDatamartHierarchy_Descending();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getHierarchyRef <em>Hierarchy Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Hierarchy Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getHierarchyRef()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EReference getDatamartHierarchy_HierarchyRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getLevelRef <em>Level Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Level Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getLevelRef()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EReference getDatamartHierarchy_LevelRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getExceptRef <em>Except Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Except Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getExceptRef()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EReference getDatamartHierarchy_ExceptRef();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getOrderRef <em>Order Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Order Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getOrderRef()
+	 * @see #getDatamartHierarchy()
+	 * @generated
+	 */
+	EReference getDatamartHierarchy_OrderRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Calculation <em>Calculation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Calculation</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Calculation
+	 * @generated
+	 */
+	EClass getCalculation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Calculation#getLeft <em>Left</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Left</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Calculation#getLeft()
+	 * @see #getCalculation()
+	 * @generated
+	 */
+	EReference getCalculation_Left();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.Calculation#getRight <em>Right</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Right</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Calculation#getRight()
+	 * @see #getCalculation()
+	 * @generated
+	 */
+	EReference getCalculation_Right();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartReference <em>Datamart Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Datamart Reference</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartReference
+	 * @generated
+	 */
+	EClass getDatamartReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartReference#getRef <em>Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartReference#getRef()
+	 * @see #getDatamartReference()
+	 * @generated
+	 */
+	EReference getDatamartReference_Ref();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Addition <em>Addition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Addition</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Addition
+	 * @generated
+	 */
+	EClass getAddition();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Division <em>Division</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Division</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Division
+	 * @generated
+	 */
+	EClass getDivision();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Multiplication <em>Multiplication</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Multiplication</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Multiplication
+	 * @generated
+	 */
+	EClass getMultiplication();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Subtraction <em>Subtraction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Subtraction</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Subtraction
+	 * @generated
+	 */
+	EClass getSubtraction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Conjunction <em>Conjunction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conjunction</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Conjunction
+	 * @generated
+	 */
+	EClass getConjunction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.Disjunction <em>Disjunction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Disjunction</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.Disjunction
+	 * @generated
+	 */
+	EClass getDisjunction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression <em>Conditional Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conditional Expression</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression
+	 * @generated
+	 */
+	EClass getConditionalExpression();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression#getOperator <em>Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Operator</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression#getOperator()
+	 * @see #getConditionalExpression()
+	 * @generated
+	 */
+	EAttribute getConditionalExpression_Operator();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart <em>Event Broker Data Mart</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Event Broker Data Mart</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart
+	 * @generated
+	 */
+	EClass getEventBrokerDataMart();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getFilter <em>Filter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filter</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getFilter()
+	 * @see #getEventBrokerDataMart()
+	 * @generated
+	 */
+	EAttribute getEventBrokerDataMart_Filter();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getDatamartDef <em>Datamart Def</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Datamart Def</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getDatamartDef()
+	 * @see #getEventBrokerDataMart()
+	 * @generated
+	 */
+	EReference getEventBrokerDataMart_DatamartDef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData <em>Property Filler Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Data</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData
+	 * @generated
+	 */
+	EClass getPropertyFillerData();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getPropertyRef <em>Property Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Property Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getPropertyRef()
+	 * @see #getPropertyFillerData()
+	 * @generated
+	 */
+	EReference getPropertyFillerData_PropertyRef();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getFillerType <em>Filler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Filler Type</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getFillerType()
+	 * @see #getPropertyFillerData()
+	 * @generated
+	 */
+	EReference getPropertyFillerData_FillerType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType <em>Property Filler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Type</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType
+	 * @generated
+	 */
+	EClass getPropertyFillerType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType <em>Property Filler Date Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Date Type</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType
+	 * @generated
+	 */
+	EClass getPropertyFillerDateType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType <em>Property Filler Double Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Double Type</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType
+	 * @generated
+	 */
+	EClass getPropertyFillerDoubleType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType <em>Property Filler Integer Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Integer Type</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType
+	 * @generated
+	 */
+	EClass getPropertyFillerIntegerType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType <em>Property Filler Text Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Text Type</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType
+	 * @generated
+	 */
+	EClass getPropertyFillerTextType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture <em>Property Filler Date Future</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Date Future</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture
+	 * @generated
+	 */
+	EClass getPropertyFillerDateFuture();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture#getDateFutureYears <em>Date Future Years</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Date Future Years</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture#getDateFutureYears()
+	 * @see #getPropertyFillerDateFuture()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerDateFuture_DateFutureYears();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast <em>Property Filler Date Past</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Date Past</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast
+	 * @generated
+	 */
+	EClass getPropertyFillerDatePast();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast#getDatePastYears <em>Date Past Years</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Date Past Years</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast#getDatePastYears()
+	 * @see #getPropertyFillerDatePast()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerDatePast_DatePastYears();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange <em>Property Filler Date Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Date Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange
+	 * @generated
+	 */
+	EClass getPropertyFillerDateRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateBeginYears <em>Date Begin Years</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Date Begin Years</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateBeginYears()
+	 * @see #getPropertyFillerDateRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerDateRange_DateBeginYears();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateEndYears <em>Date End Years</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Date End Years</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateEndYears()
+	 * @see #getPropertyFillerDateRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerDateRange_DateEndYears();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange <em>Property Filler Signed Double Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Signed Double Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange
+	 * @generated
+	 */
+	EClass getPropertyFillerSignedDoubleRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getDecimals <em>Decimals</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Decimals</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getDecimals()
+	 * @see #getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedDoubleRange_Decimals();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRange <em>Begin Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Begin Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRange()
+	 * @see #getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedDoubleRange_BeginRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRange <em>End Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>End Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRange()
+	 * @see #getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedDoubleRange_EndRange();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRangeRef <em>Begin Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Begin Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRangeRef()
+	 * @see #getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerSignedDoubleRange_BeginRangeRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRangeRef <em>End Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>End Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRangeRef()
+	 * @see #getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerSignedDoubleRange_EndRangeRef();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getRounded <em>Rounded</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rounded</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getRounded()
+	 * @see #getPropertyFillerSignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedDoubleRange_Rounded();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom <em>Property Filler Signed Double Random</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Signed Double Random</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom
+	 * @generated
+	 */
+	EClass getPropertyFillerSignedDoubleRandom();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom#getItems <em>Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Items</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom#getItems()
+	 * @see #getPropertyFillerSignedDoubleRandom()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedDoubleRandom_Items();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange <em>Property Filler Signed Integer Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Signed Integer Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange
+	 * @generated
+	 */
+	EClass getPropertyFillerSignedIntegerRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRange <em>Begin Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Begin Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRange()
+	 * @see #getPropertyFillerSignedIntegerRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedIntegerRange_BeginRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRange <em>End Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>End Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRange()
+	 * @see #getPropertyFillerSignedIntegerRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedIntegerRange_EndRange();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRangeRef <em>Begin Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Begin Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRangeRef()
+	 * @see #getPropertyFillerSignedIntegerRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerSignedIntegerRange_BeginRangeRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRangeRef <em>End Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>End Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRangeRef()
+	 * @see #getPropertyFillerSignedIntegerRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerSignedIntegerRange_EndRangeRef();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getRounded <em>Rounded</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rounded</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getRounded()
+	 * @see #getPropertyFillerSignedIntegerRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedIntegerRange_Rounded();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom <em>Property Filler Signed Integer Random</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Signed Integer Random</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom
+	 * @generated
+	 */
+	EClass getPropertyFillerSignedIntegerRandom();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom#getItems <em>Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Items</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom#getItems()
+	 * @see #getPropertyFillerSignedIntegerRandom()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerSignedIntegerRandom_Items();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom <em>Property Filler Text Random</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Text Random</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom
+	 * @generated
+	 */
+	EClass getPropertyFillerTextRandom();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom#getItems <em>Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Items</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom#getItems()
+	 * @see #getPropertyFillerTextRandom()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerTextRandom_Items();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs <em>Property Filler Text Paragraphs</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Text Paragraphs</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs
+	 * @generated
+	 */
+	EClass getPropertyFillerTextParagraphs();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Count</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs#getCount()
+	 * @see #getPropertyFillerTextParagraphs()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerTextParagraphs_Count();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences <em>Property Filler Text Sentences</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Text Sentences</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences
+	 * @generated
+	 */
+	EClass getPropertyFillerTextSentences();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Count</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences#getCount()
+	 * @see #getPropertyFillerTextSentences()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerTextSentences_Count();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords <em>Property Filler Text Words</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Text Words</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords
+	 * @generated
+	 */
+	EClass getPropertyFillerTextWords();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords#getCount <em>Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Count</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords#getCount()
+	 * @see #getPropertyFillerTextWords()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerTextWords_Count();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange <em>Property Filler Unsigned Double Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Unsigned Double Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange
+	 * @generated
+	 */
+	EClass getPropertyFillerUnsignedDoubleRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getDecimals <em>Decimals</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Decimals</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getDecimals()
+	 * @see #getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedDoubleRange_Decimals();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRange <em>Begin Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Begin Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRange()
+	 * @see #getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedDoubleRange_BeginRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRange <em>End Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>End Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRange()
+	 * @see #getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedDoubleRange_EndRange();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRangeRef <em>Begin Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Begin Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRangeRef()
+	 * @see #getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerUnsignedDoubleRange_BeginRangeRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRangeRef <em>End Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>End Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRangeRef()
+	 * @see #getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerUnsignedDoubleRange_EndRangeRef();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getRounded <em>Rounded</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rounded</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getRounded()
+	 * @see #getPropertyFillerUnsignedDoubleRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedDoubleRange_Rounded();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom <em>Property Filler Unsigned Double Random</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Unsigned Double Random</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom
+	 * @generated
+	 */
+	EClass getPropertyFillerUnsignedDoubleRandom();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom#getItems <em>Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Items</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom#getItems()
+	 * @see #getPropertyFillerUnsignedDoubleRandom()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedDoubleRandom_Items();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange <em>Property Filler Unsigned Integer Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Unsigned Integer Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange
+	 * @generated
+	 */
+	EClass getPropertyFillerUnsignedIntegerRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRange <em>Begin Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Begin Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRange()
+	 * @see #getPropertyFillerUnsignedIntegerRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedIntegerRange_BeginRange();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRange <em>End Range</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>End Range</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRange()
+	 * @see #getPropertyFillerUnsignedIntegerRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedIntegerRange_EndRange();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRangeRef <em>Begin Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Begin Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRangeRef()
+	 * @see #getPropertyFillerUnsignedIntegerRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerUnsignedIntegerRange_BeginRangeRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRangeRef <em>End Range Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>End Range Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRangeRef()
+	 * @see #getPropertyFillerUnsignedIntegerRange()
+	 * @generated
+	 */
+	EReference getPropertyFillerUnsignedIntegerRange_EndRangeRef();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getRounded <em>Rounded</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rounded</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getRounded()
+	 * @see #getPropertyFillerUnsignedIntegerRange()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedIntegerRange_Rounded();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom <em>Property Filler Unsigned Integer Random</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Property Filler Unsigned Integer Random</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom
+	 * @generated
+	 */
+	EClass getPropertyFillerUnsignedIntegerRandom();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom#getItems <em>Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Items</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom#getItems()
+	 * @see #getPropertyFillerUnsignedIntegerRandom()
+	 * @generated
+	 */
+	EAttribute getPropertyFillerUnsignedIntegerRandom_Items();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.AxisEnum <em>Axis Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Axis Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+	 * @generated
+	 */
+	EEnum getAxisEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.FunctionEnum <em>Function Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Function Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.FunctionEnum
+	 * @generated
+	 */
+	EEnum getFunctionEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum <em>Parameter Function Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Parameter Function Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum
+	 * @generated
+	 */
+	EEnum getParameterFunctionEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum <em>Set Function Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Set Function Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum
+	 * @generated
+	 */
+	EEnum getSetFunctionEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum <em>Set Parameter Function Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Set Parameter Function Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum
+	 * @generated
+	 */
+	EEnum getSetParameterFunctionEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum <em>Set Aggregation Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Set Aggregation Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum
+	 * @generated
+	 */
+	EEnum getSetAggregationEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.AggregationEnum <em>Aggregation Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Aggregation Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AggregationEnum
+	 * @generated
+	 */
+	EEnum getAggregationEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.OperatorEnum <em>Operator Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Operator Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OperatorEnum
+	 * @generated
+	 */
+	EEnum getOperatorEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum <em>Sql Aggregation Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Sql Aggregation Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum
+	 * @generated
+	 */
+	EEnum getSqlAggregationEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum <em>Value Scale Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Value Scale Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @generated
+	 */
+	EEnum getValueScaleEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum <em>Task Query Topic Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Task Query Topic Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum
+	 * @generated
+	 */
+	EEnum getTaskQueryTopicEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum <em>Task Query Column Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Task Query Column Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum
+	 * @generated
+	 */
+	EEnum getTaskQueryColumnEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum <em>Task Filter Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Task Filter Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum
+	 * @generated
+	 */
+	EEnum getTaskFilterEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.datamartdsl.OrderEnum <em>Order Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Order Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OrderEnum
+	 * @generated
+	 */
+	EEnum getOrderEnum();
+
+	/**
+	 * 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
+	 */
+	DatamartDSLFactory getDatamartDSLFactory();
+
+	/**
+	 * <!-- 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.datamartdsl.impl.DatamartModelImpl <em>Datamart Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartModelImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartModel()
+		 * @generated
+		 */
+		EClass DATAMART_MODEL = eINSTANCE.getDatamartModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_MODEL__PACKAGES = eINSTANCE.getDatamartModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartLazyResolverImpl <em>Datamart Lazy Resolver</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartLazyResolverImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartLazyResolver()
+		 * @generated
+		 */
+		EClass DATAMART_LAZY_RESOLVER = eINSTANCE.getDatamartLazyResolver();
+
+		/**
+		 * The meta object literal for the '<em><b>EResolve Proxy</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = eINSTANCE.getDatamartLazyResolver__EResolveProxy__InternalEObject();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartBaseImpl <em>Datamart Base</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartBaseImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartBase()
+		 * @generated
+		 */
+		EClass DATAMART_BASE = eINSTANCE.getDatamartBase();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_BASE__NAME = eINSTANCE.getDatamartBase_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPackageImpl <em>Datamart Package</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPackageImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartPackage()
+		 * @generated
+		 */
+		EClass DATAMART_PACKAGE = eINSTANCE.getDatamartPackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Definitions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_PACKAGE__DEFINITIONS = eINSTANCE.getDatamartPackage_Definitions();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl <em>Datamart Definition</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartDefinition()
+		 * @generated
+		 */
+		EClass DATAMART_DEFINITION = eINSTANCE.getDatamartDefinition();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_DEFINITION__DESCRIPTION = eINSTANCE.getDatamartDefinition_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Description Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_DEFINITION__DESCRIPTION_VALUE = eINSTANCE.getDatamartDefinition_DescriptionValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_DEFINITION__SOURCE = eINSTANCE.getDatamartDefinition_Source();
+
+		/**
+		 * The meta object literal for the '<em><b>Roles</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_DEFINITION__ROLES = eINSTANCE.getDatamartDefinition_Roles();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSource <em>Datamart Source</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSource
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSource()
+		 * @generated
+		 */
+		EClass DATAMART_SOURCE = eINSTANCE.getDatamartSource();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartRoleImpl <em>Datamart Role</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartRoleImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartRole()
+		 * @generated
+		 */
+		EClass DATAMART_ROLE = eINSTANCE.getDatamartRole();
+
+		/**
+		 * The meta object literal for the '<em><b>Assigned Role</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ROLE__ASSIGNED_ROLE = eINSTANCE.getDatamartRole_AssignedRole();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl <em>Datamart Task</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartTask()
+		 * @generated
+		 */
+		EClass DATAMART_TASK = eINSTANCE.getDatamartTask();
+
+		/**
+		 * The meta object literal for the '<em><b>Task Query</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_TASK__TASK_QUERY = eINSTANCE.getDatamartTask_TaskQuery();
+
+		/**
+		 * The meta object literal for the '<em><b>Columns</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_TASK__COLUMNS = eINSTANCE.getDatamartTask_Columns();
+
+		/**
+		 * The meta object literal for the '<em><b>Conditions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_TASK__CONDITIONS = eINSTANCE.getDatamartTask_Conditions();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl <em>Datamart Cube</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartCube()
+		 * @generated
+		 */
+		EClass DATAMART_CUBE = eINSTANCE.getDatamartCube();
+
+		/**
+		 * The meta object literal for the '<em><b>Non Empty</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_CUBE__NON_EMPTY = eINSTANCE.getDatamartCube_NonEmpty();
+
+		/**
+		 * The meta object literal for the '<em><b>Cube Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_CUBE__CUBE_REF = eINSTANCE.getDatamartCube_CubeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Axisslicer</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_CUBE__AXISSLICER = eINSTANCE.getDatamartCube_Axisslicer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl <em>Datamart Entity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartEntity()
+		 * @generated
+		 */
+		EClass DATAMART_ENTITY = eINSTANCE.getDatamartEntity();
+
+		/**
+		 * The meta object literal for the '<em><b>Entity Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ENTITY__ENTITY_REF = eINSTANCE.getDatamartEntity_EntityRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Navigations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ENTITY__NAVIGATIONS = eINSTANCE.getDatamartEntity_Navigations();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ENTITY__PROPERTIES = eINSTANCE.getDatamartEntity_Properties();
+
+		/**
+		 * The meta object literal for the '<em><b>Conditions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ENTITY__CONDITIONS = eINSTANCE.getDatamartEntity_Conditions();
+
+		/**
+		 * The meta object literal for the '<em><b>Ordering</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ENTITY__ORDERING = eINSTANCE.getDatamartEntity_Ordering();
+
+		/**
+		 * The meta object literal for the '<em><b>Filler Min Count Rows</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS = eINSTANCE.getDatamartEntity_FillerMinCountRows();
+
+		/**
+		 * The meta object literal for the '<em><b>Filler Max Count Rows</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS = eINSTANCE.getDatamartEntity_FillerMaxCountRows();
+
+		/**
+		 * The meta object literal for the '<em><b>Tracking</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_ENTITY__TRACKING = eINSTANCE.getDatamartEntity_Tracking();
+
+		/**
+		 * The meta object literal for the '<em><b>Filler Datas</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ENTITY__FILLER_DATAS = eINSTANCE.getDatamartEntity_FillerDatas();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartColumnImpl <em>Datamart Column</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartColumnImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartColumn()
+		 * @generated
+		 */
+		EClass DATAMART_COLUMN = eINSTANCE.getDatamartColumn();
+
+		/**
+		 * The meta object literal for the '<em><b>Column Ref</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_COLUMN__COLUMN_REF = eINSTANCE.getDatamartColumn_ColumnRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskFilterImpl <em>Datamart Task Filter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskFilterImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartTaskFilter()
+		 * @generated
+		 */
+		EClass DATAMART_TASK_FILTER = eINSTANCE.getDatamartTaskFilter();
+
+		/**
+		 * The meta object literal for the '<em><b>Filter Ref</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_TASK_FILTER__FILTER_REF = eINSTANCE.getDatamartTaskFilter_FilterRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartNavigationImpl <em>Datamart Navigation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartNavigationImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartNavigation()
+		 * @generated
+		 */
+		EClass DATAMART_NAVIGATION = eINSTANCE.getDatamartNavigation();
+
+		/**
+		 * The meta object literal for the '<em><b>Join Ref</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_NAVIGATION__JOIN_REF = eINSTANCE.getDatamartNavigation_JoinRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Datamart Entity</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_NAVIGATION__DATAMART_ENTITY = eINSTANCE.getDatamartNavigation_DatamartEntity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOwnerImpl <em>Datamart Owner</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOwnerImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartOwner()
+		 * @generated
+		 */
+		EClass DATAMART_OWNER = eINSTANCE.getDatamartOwner();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberImpl <em>Datamart Member</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartMember()
+		 * @generated
+		 */
+		EClass DATAMART_MEMBER = eINSTANCE.getDatamartMember();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl <em>Datamart Property</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartProperty()
+		 * @generated
+		 */
+		EClass DATAMART_PROPERTY = eINSTANCE.getDatamartProperty();
+
+		/**
+		 * The meta object literal for the '<em><b>Aggregated</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PROPERTY__AGGREGATED = eINSTANCE.getDatamartProperty_Aggregated();
+
+		/**
+		 * The meta object literal for the '<em><b>Scaled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PROPERTY__SCALED = eINSTANCE.getDatamartProperty_Scaled();
+
+		/**
+		 * The meta object literal for the '<em><b>Placed</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PROPERTY__PLACED = eINSTANCE.getDatamartProperty_Placed();
+
+		/**
+		 * The meta object literal for the '<em><b>Axis</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PROPERTY__AXIS = eINSTANCE.getDatamartProperty_Axis();
+
+		/**
+		 * The meta object literal for the '<em><b>Aggregate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PROPERTY__AGGREGATE = eINSTANCE.getDatamartProperty_Aggregate();
+
+		/**
+		 * The meta object literal for the '<em><b>Scale</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PROPERTY__SCALE = eINSTANCE.getDatamartProperty_Scale();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_PROPERTY__PROPERTY_REF = eINSTANCE.getDatamartProperty_PropertyRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl <em>Expression</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getExpression()
+		 * @generated
+		 */
+		EClass EXPRESSION = eINSTANCE.getExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Filtered</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPRESSION__FILTERED = eINSTANCE.getExpression_Filtered();
+
+		/**
+		 * The meta object literal for the '<em><b>Selected</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPRESSION__SELECTED = eINSTANCE.getExpression_Selected();
+
+		/**
+		 * The meta object literal for the '<em><b>Optional</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPRESSION__OPTIONAL = eINSTANCE.getExpression_Optional();
+
+		/**
+		 * The meta object literal for the '<em><b>Number Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPRESSION__NUMBER_VALUE = eINSTANCE.getExpression_NumberValue();
+
+		/**
+		 * The meta object literal for the '<em><b>String Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPRESSION__STRING_VALUE = eINSTANCE.getExpression_StringValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EXPRESSION__VALUE = eINSTANCE.getExpression_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Hierarchy</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXPRESSION__HIERARCHY = eINSTANCE.getExpression_Hierarchy();
+
+		/**
+		 * The meta object literal for the '<em><b>Aggregation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXPRESSION__AGGREGATION = eINSTANCE.getExpression_Aggregation();
+
+		/**
+		 * The meta object literal for the '<em><b>Function</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXPRESSION__FUNCTION = eINSTANCE.getExpression_Function();
+
+		/**
+		 * The meta object literal for the '<em><b>Set</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXPRESSION__SET = eINSTANCE.getExpression_Set();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Function</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EXPRESSION__SET_FUNCTION = eINSTANCE.getExpression_SetFunction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartConditionImpl <em>Datamart Condition</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartConditionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartCondition()
+		 * @generated
+		 */
+		EClass DATAMART_CONDITION = eINSTANCE.getDatamartCondition();
+
+		/**
+		 * The meta object literal for the '<em><b>Condition</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_CONDITION__CONDITION = eINSTANCE.getDatamartCondition_Condition();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOrderImpl <em>Datamart Order</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOrderImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartOrder()
+		 * @generated
+		 */
+		EClass DATAMART_ORDER = eINSTANCE.getDatamartOrder();
+
+		/**
+		 * The meta object literal for the '<em><b>Order By</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_ORDER__ORDER_BY = eINSTANCE.getDatamartOrder_OrderBy();
+
+		/**
+		 * The meta object literal for the '<em><b>Order How</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_ORDER__ORDER_HOW = eINSTANCE.getDatamartOrder_OrderHow();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement <em>Datamart Cube Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartCubeElement()
+		 * @generated
+		 */
+		EClass DATAMART_CUBE_ELEMENT = eINSTANCE.getDatamartCubeElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefineDerivedMeasureImpl <em>Datamart Define Derived Measure</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefineDerivedMeasureImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartDefineDerivedMeasure()
+		 * @generated
+		 */
+		EClass DATAMART_DEFINE_DERIVED_MEASURE = eINSTANCE.getDatamartDefineDerivedMeasure();
+
+		/**
+		 * The meta object literal for the '<em><b>Derived Element</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT = eINSTANCE.getDatamartDefineDerivedMeasure_DerivedElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface <em>Datamart Function Interface</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartFunctionInterface()
+		 * @generated
+		 */
+		EClass DATAMART_FUNCTION_INTERFACE = eINSTANCE.getDatamartFunctionInterface();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionImpl <em>Datamart Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartFunction()
+		 * @generated
+		 */
+		EClass DATAMART_FUNCTION = eINSTANCE.getDatamartFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Function</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_FUNCTION__FUNCTION = eINSTANCE.getDatamartFunction_Function();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartParameterFunctionImpl <em>Datamart Parameter Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartParameterFunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartParameterFunction()
+		 * @generated
+		 */
+		EClass DATAMART_PARAMETER_FUNCTION = eINSTANCE.getDatamartParameterFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Function</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_PARAMETER_FUNCTION__FUNCTION = eINSTANCE.getDatamartParameterFunction_Function();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_PARAMETER_FUNCTION__PARAMETER = eINSTANCE.getDatamartParameterFunction_Parameter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionIntParameterImpl <em>Datamart Function Int Parameter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionIntParameterImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartFunctionIntParameter()
+		 * @generated
+		 */
+		EClass DATAMART_FUNCTION_INT_PARAMETER = eINSTANCE.getDatamartFunctionIntParameter();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_FUNCTION_INT_PARAMETER__VALUE = eINSTANCE.getDatamartFunctionIntParameter_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface <em>Datamart Set Function Interface</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetFunctionInterface()
+		 * @generated
+		 */
+		EClass DATAMART_SET_FUNCTION_INTERFACE = eINSTANCE.getDatamartSetFunctionInterface();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetFunctionImpl <em>Datamart Set Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetFunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetFunction()
+		 * @generated
+		 */
+		EClass DATAMART_SET_FUNCTION = eINSTANCE.getDatamartSetFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Function</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_SET_FUNCTION__SET_FUNCTION = eINSTANCE.getDatamartSetFunction_SetFunction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetParameterFunctionImpl <em>Datamart Set Parameter Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetParameterFunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetParameterFunction()
+		 * @generated
+		 */
+		EClass DATAMART_SET_PARAMETER_FUNCTION = eINSTANCE.getDatamartSetParameterFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Function</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION = eINSTANCE.getDatamartSetParameterFunction_SetFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_SET_PARAMETER_FUNCTION__PARAMETER = eINSTANCE.getDatamartSetParameterFunction_Parameter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface <em>Datamart Aggregation Function Interface</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregationFunctionInterface()
+		 * @generated
+		 */
+		EClass DATAMART_AGGREGATION_FUNCTION_INTERFACE = eINSTANCE.getDatamartAggregationFunctionInterface();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationFunctionImpl <em>Datamart Set Aggregation Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationFunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetAggregationFunction()
+		 * @generated
+		 */
+		EClass DATAMART_SET_AGGREGATION_FUNCTION = eINSTANCE.getDatamartSetAggregationFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Aggregation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION = eINSTANCE.getDatamartSetAggregationFunction_Aggregation();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER = eINSTANCE.getDatamartSetAggregationFunction_Parameter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationExpressionImpl <em>Datamart Aggregation Expression</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationExpressionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregationExpression()
+		 * @generated
+		 */
+		EClass DATAMART_AGGREGATION_EXPRESSION = eINSTANCE.getDatamartAggregationExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_AGGREGATION_EXPRESSION__LEFT = eINSTANCE.getDatamartAggregationExpression_Left();
+
+		/**
+		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_AGGREGATION_EXPRESSION__RIGHT = eINSTANCE.getDatamartAggregationExpression_Right();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetTupleImpl <em>Datamart Set Tuple</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetTupleImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetTuple()
+		 * @generated
+		 */
+		EClass DATAMART_SET_TUPLE = eINSTANCE.getDatamartSetTuple();
+
+		/**
+		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_SET_TUPLE__LEFT = eINSTANCE.getDatamartSetTuple_Left();
+
+		/**
+		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_SET_TUPLE__RIGHT = eINSTANCE.getDatamartSetTuple_Right();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationImpl <em>Datamart Set Aggregation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSetAggregation()
+		 * @generated
+		 */
+		EClass DATAMART_SET_AGGREGATION = eINSTANCE.getDatamartSetAggregation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationImpl <em>Datamart Aggregation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregation()
+		 * @generated
+		 */
+		EClass DATAMART_AGGREGATION = eINSTANCE.getDatamartAggregation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberTupleImpl <em>Datamart Member Tuple</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMemberTupleImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartMemberTuple()
+		 * @generated
+		 */
+		EClass DATAMART_MEMBER_TUPLE = eINSTANCE.getDatamartMemberTuple();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationFunctionImpl <em>Datamart Aggregation Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationFunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAggregationFunction()
+		 * @generated
+		 */
+		EClass DATAMART_AGGREGATION_FUNCTION = eINSTANCE.getDatamartAggregationFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Aggregation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_AGGREGATION_FUNCTION__AGGREGATION = eINSTANCE.getDatamartAggregationFunction_Aggregation();
+
+		/**
+		 * The meta object literal for the '<em><b>Parameter</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_AGGREGATION_FUNCTION__PARAMETER = eINSTANCE.getDatamartAggregationFunction_Parameter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSlicerImpl <em>Datamart Slicer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSlicerImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartSlicer()
+		 * @generated
+		 */
+		EClass DATAMART_SLICER = eINSTANCE.getDatamartSlicer();
+
+		/**
+		 * The meta object literal for the '<em><b>Element</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_SLICER__ELEMENT = eINSTANCE.getDatamartSlicer_Element();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAxisImpl <em>Datamart Axis</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAxisImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartAxis()
+		 * @generated
+		 */
+		EClass DATAMART_AXIS = eINSTANCE.getDatamartAxis();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_AXIS__NAME = eINSTANCE.getDatamartAxis_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_AXIS__ELEMENTS = eINSTANCE.getDatamartAxis_Elements();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartElement <em>Datamart Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartElement
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartElement()
+		 * @generated
+		 */
+		EClass DATAMART_ELEMENT = eINSTANCE.getDatamartElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl <em>Datamart Derived Measure</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartDerivedMeasure()
+		 * @generated
+		 */
+		EClass DATAMART_DERIVED_MEASURE = eINSTANCE.getDatamartDerivedMeasure();
+
+		/**
+		 * The meta object literal for the '<em><b>Scaled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_DERIVED_MEASURE__SCALED = eINSTANCE.getDatamartDerivedMeasure_Scaled();
+
+		/**
+		 * The meta object literal for the '<em><b>Scale</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_DERIVED_MEASURE__SCALE = eINSTANCE.getDatamartDerivedMeasure_Scale();
+
+		/**
+		 * The meta object literal for the '<em><b>Derived Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_DERIVED_MEASURE__DERIVED_REF = eINSTANCE.getDatamartDerivedMeasure_DerivedRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl <em>Datamart Measure</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartMeasure()
+		 * @generated
+		 */
+		EClass DATAMART_MEASURE = eINSTANCE.getDatamartMeasure();
+
+		/**
+		 * The meta object literal for the '<em><b>Scaled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_MEASURE__SCALED = eINSTANCE.getDatamartMeasure_Scaled();
+
+		/**
+		 * The meta object literal for the '<em><b>Scale</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_MEASURE__SCALE = eINSTANCE.getDatamartMeasure_Scale();
+
+		/**
+		 * The meta object literal for the '<em><b>Measure Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_MEASURE__MEASURE_REF = eINSTANCE.getDatamartMeasure_MeasureRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl <em>Datamart Hierarchy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartHierarchy()
+		 * @generated
+		 */
+		EClass DATAMART_HIERARCHY = eINSTANCE.getDatamartHierarchy();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Member</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__DEFAULT_MEMBER = eINSTANCE.getDatamartHierarchy_DefaultMember();
+
+		/**
+		 * The meta object literal for the '<em><b>All Member</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__ALL_MEMBER = eINSTANCE.getDatamartHierarchy_AllMember();
+
+		/**
+		 * The meta object literal for the '<em><b>All Levels</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__ALL_LEVELS = eINSTANCE.getDatamartHierarchy_AllLevels();
+
+		/**
+		 * The meta object literal for the '<em><b>All</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__ALL = eINSTANCE.getDatamartHierarchy_All();
+
+		/**
+		 * The meta object literal for the '<em><b>Except</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__EXCEPT = eINSTANCE.getDatamartHierarchy_Except();
+
+		/**
+		 * The meta object literal for the '<em><b>Ordered</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__ORDERED = eINSTANCE.getDatamartHierarchy_Ordered();
+
+		/**
+		 * The meta object literal for the '<em><b>Descending</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATAMART_HIERARCHY__DESCENDING = eINSTANCE.getDatamartHierarchy_Descending();
+
+		/**
+		 * The meta object literal for the '<em><b>Hierarchy Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_HIERARCHY__HIERARCHY_REF = eINSTANCE.getDatamartHierarchy_HierarchyRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Level Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_HIERARCHY__LEVEL_REF = eINSTANCE.getDatamartHierarchy_LevelRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Except Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_HIERARCHY__EXCEPT_REF = eINSTANCE.getDatamartHierarchy_ExceptRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Order Ref</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_HIERARCHY__ORDER_REF = eINSTANCE.getDatamartHierarchy_OrderRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.CalculationImpl <em>Calculation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.CalculationImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getCalculation()
+		 * @generated
+		 */
+		EClass CALCULATION = eINSTANCE.getCalculation();
+
+		/**
+		 * The meta object literal for the '<em><b>Left</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CALCULATION__LEFT = eINSTANCE.getCalculation_Left();
+
+		/**
+		 * The meta object literal for the '<em><b>Right</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CALCULATION__RIGHT = eINSTANCE.getCalculation_Right();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartReferenceImpl <em>Datamart Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartReferenceImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDatamartReference()
+		 * @generated
+		 */
+		EClass DATAMART_REFERENCE = eINSTANCE.getDatamartReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATAMART_REFERENCE__REF = eINSTANCE.getDatamartReference_Ref();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.AdditionImpl <em>Addition</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.AdditionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getAddition()
+		 * @generated
+		 */
+		EClass ADDITION = eINSTANCE.getAddition();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DivisionImpl <em>Division</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DivisionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDivision()
+		 * @generated
+		 */
+		EClass DIVISION = eINSTANCE.getDivision();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.MultiplicationImpl <em>Multiplication</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.MultiplicationImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getMultiplication()
+		 * @generated
+		 */
+		EClass MULTIPLICATION = eINSTANCE.getMultiplication();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.SubtractionImpl <em>Subtraction</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.SubtractionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSubtraction()
+		 * @generated
+		 */
+		EClass SUBTRACTION = eINSTANCE.getSubtraction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.ConjunctionImpl <em>Conjunction</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.ConjunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getConjunction()
+		 * @generated
+		 */
+		EClass CONJUNCTION = eINSTANCE.getConjunction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.DisjunctionImpl <em>Disjunction</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DisjunctionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getDisjunction()
+		 * @generated
+		 */
+		EClass DISJUNCTION = eINSTANCE.getDisjunction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.ConditionalExpressionImpl <em>Conditional Expression</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.ConditionalExpressionImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getConditionalExpression()
+		 * @generated
+		 */
+		EClass CONDITIONAL_EXPRESSION = eINSTANCE.getConditionalExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Operator</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONDITIONAL_EXPRESSION__OPERATOR = eINSTANCE.getConditionalExpression_Operator();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.EventBrokerDataMartImpl <em>Event Broker Data Mart</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.EventBrokerDataMartImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getEventBrokerDataMart()
+		 * @generated
+		 */
+		EClass EVENT_BROKER_DATA_MART = eINSTANCE.getEventBrokerDataMart();
+
+		/**
+		 * The meta object literal for the '<em><b>Filter</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EVENT_BROKER_DATA_MART__FILTER = eINSTANCE.getEventBrokerDataMart_Filter();
+
+		/**
+		 * The meta object literal for the '<em><b>Datamart Def</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVENT_BROKER_DATA_MART__DATAMART_DEF = eINSTANCE.getEventBrokerDataMart_DatamartDef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDataImpl <em>Property Filler Data</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDataImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerData()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_DATA = eINSTANCE.getPropertyFillerData();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_DATA__PROPERTY_REF = eINSTANCE.getPropertyFillerData_PropertyRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Filler Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_DATA__FILLER_TYPE = eINSTANCE.getPropertyFillerData_FillerType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTypeImpl <em>Property Filler Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTypeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerType()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_TYPE = eINSTANCE.getPropertyFillerType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateTypeImpl <em>Property Filler Date Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateTypeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDateType()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_DATE_TYPE = eINSTANCE.getPropertyFillerDateType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDoubleTypeImpl <em>Property Filler Double Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDoubleTypeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDoubleType()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_DOUBLE_TYPE = eINSTANCE.getPropertyFillerDoubleType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerIntegerTypeImpl <em>Property Filler Integer Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerIntegerTypeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerIntegerType()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_INTEGER_TYPE = eINSTANCE.getPropertyFillerIntegerType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextTypeImpl <em>Property Filler Text Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextTypeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextType()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_TEXT_TYPE = eINSTANCE.getPropertyFillerTextType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateFutureImpl <em>Property Filler Date Future</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateFutureImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDateFuture()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_DATE_FUTURE = eINSTANCE.getPropertyFillerDateFuture();
+
+		/**
+		 * The meta object literal for the '<em><b>Date Future Years</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS = eINSTANCE.getPropertyFillerDateFuture_DateFutureYears();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDatePastImpl <em>Property Filler Date Past</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDatePastImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDatePast()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_DATE_PAST = eINSTANCE.getPropertyFillerDatePast();
+
+		/**
+		 * The meta object literal for the '<em><b>Date Past Years</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS = eINSTANCE.getPropertyFillerDatePast_DatePastYears();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateRangeImpl <em>Property Filler Date Range</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateRangeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerDateRange()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_DATE_RANGE = eINSTANCE.getPropertyFillerDateRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Date Begin Years</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS = eINSTANCE.getPropertyFillerDateRange_DateBeginYears();
+
+		/**
+		 * The meta object literal for the '<em><b>Date End Years</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS = eINSTANCE.getPropertyFillerDateRange_DateEndYears();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl <em>Property Filler Signed Double Range</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedDoubleRange()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_SIGNED_DOUBLE_RANGE = eINSTANCE.getPropertyFillerSignedDoubleRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Decimals</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS = eINSTANCE.getPropertyFillerSignedDoubleRange_Decimals();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE = eINSTANCE.getPropertyFillerSignedDoubleRange_BeginRange();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE = eINSTANCE.getPropertyFillerSignedDoubleRange_EndRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF = eINSTANCE.getPropertyFillerSignedDoubleRange_BeginRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF = eINSTANCE.getPropertyFillerSignedDoubleRange_EndRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Rounded</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED = eINSTANCE.getPropertyFillerSignedDoubleRange_Rounded();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRandomImpl <em>Property Filler Signed Double Random</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRandomImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedDoubleRandom()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM = eINSTANCE.getPropertyFillerSignedDoubleRandom();
+
+		/**
+		 * The meta object literal for the '<em><b>Items</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS = eINSTANCE.getPropertyFillerSignedDoubleRandom_Items();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl <em>Property Filler Signed Integer Range</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedIntegerRange()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_SIGNED_INTEGER_RANGE = eINSTANCE.getPropertyFillerSignedIntegerRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE = eINSTANCE.getPropertyFillerSignedIntegerRange_BeginRange();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE = eINSTANCE.getPropertyFillerSignedIntegerRange_EndRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF = eINSTANCE.getPropertyFillerSignedIntegerRange_BeginRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF = eINSTANCE.getPropertyFillerSignedIntegerRange_EndRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Rounded</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED = eINSTANCE.getPropertyFillerSignedIntegerRange_Rounded();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRandomImpl <em>Property Filler Signed Integer Random</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRandomImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerSignedIntegerRandom()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_SIGNED_INTEGER_RANDOM = eINSTANCE.getPropertyFillerSignedIntegerRandom();
+
+		/**
+		 * The meta object literal for the '<em><b>Items</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS = eINSTANCE.getPropertyFillerSignedIntegerRandom_Items();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextRandomImpl <em>Property Filler Text Random</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextRandomImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextRandom()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_TEXT_RANDOM = eINSTANCE.getPropertyFillerTextRandom();
+
+		/**
+		 * The meta object literal for the '<em><b>Items</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_TEXT_RANDOM__ITEMS = eINSTANCE.getPropertyFillerTextRandom_Items();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextParagraphsImpl <em>Property Filler Text Paragraphs</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextParagraphsImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextParagraphs()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_TEXT_PARAGRAPHS = eINSTANCE.getPropertyFillerTextParagraphs();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT = eINSTANCE.getPropertyFillerTextParagraphs_Count();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextSentencesImpl <em>Property Filler Text Sentences</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextSentencesImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextSentences()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_TEXT_SENTENCES = eINSTANCE.getPropertyFillerTextSentences();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_TEXT_SENTENCES__COUNT = eINSTANCE.getPropertyFillerTextSentences_Count();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextWordsImpl <em>Property Filler Text Words</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextWordsImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerTextWords()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_TEXT_WORDS = eINSTANCE.getPropertyFillerTextWords();
+
+		/**
+		 * The meta object literal for the '<em><b>Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_TEXT_WORDS__COUNT = eINSTANCE.getPropertyFillerTextWords_Count();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl <em>Property Filler Unsigned Double Range</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedDoubleRange()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE = eINSTANCE.getPropertyFillerUnsignedDoubleRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Decimals</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS = eINSTANCE.getPropertyFillerUnsignedDoubleRange_Decimals();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE = eINSTANCE.getPropertyFillerUnsignedDoubleRange_BeginRange();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE = eINSTANCE.getPropertyFillerUnsignedDoubleRange_EndRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF = eINSTANCE.getPropertyFillerUnsignedDoubleRange_BeginRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF = eINSTANCE.getPropertyFillerUnsignedDoubleRange_EndRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Rounded</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED = eINSTANCE.getPropertyFillerUnsignedDoubleRange_Rounded();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRandomImpl <em>Property Filler Unsigned Double Random</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRandomImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedDoubleRandom()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM = eINSTANCE.getPropertyFillerUnsignedDoubleRandom();
+
+		/**
+		 * The meta object literal for the '<em><b>Items</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS = eINSTANCE.getPropertyFillerUnsignedDoubleRandom_Items();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl <em>Property Filler Unsigned Integer Range</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedIntegerRange()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE = eINSTANCE.getPropertyFillerUnsignedIntegerRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE = eINSTANCE.getPropertyFillerUnsignedIntegerRange_BeginRange();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE = eINSTANCE.getPropertyFillerUnsignedIntegerRange_EndRange();
+
+		/**
+		 * The meta object literal for the '<em><b>Begin Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF = eINSTANCE.getPropertyFillerUnsignedIntegerRange_BeginRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>End Range Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF = eINSTANCE.getPropertyFillerUnsignedIntegerRange_EndRangeRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Rounded</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED = eINSTANCE.getPropertyFillerUnsignedIntegerRange_Rounded();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRandomImpl <em>Property Filler Unsigned Integer Random</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRandomImpl
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getPropertyFillerUnsignedIntegerRandom()
+		 * @generated
+		 */
+		EClass PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM = eINSTANCE.getPropertyFillerUnsignedIntegerRandom();
+
+		/**
+		 * The meta object literal for the '<em><b>Items</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS = eINSTANCE.getPropertyFillerUnsignedIntegerRandom_Items();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.AxisEnum <em>Axis Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getAxisEnum()
+		 * @generated
+		 */
+		EEnum AXIS_ENUM = eINSTANCE.getAxisEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.FunctionEnum <em>Function Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.FunctionEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getFunctionEnum()
+		 * @generated
+		 */
+		EEnum FUNCTION_ENUM = eINSTANCE.getFunctionEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum <em>Parameter Function Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getParameterFunctionEnum()
+		 * @generated
+		 */
+		EEnum PARAMETER_FUNCTION_ENUM = eINSTANCE.getParameterFunctionEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum <em>Set Function Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSetFunctionEnum()
+		 * @generated
+		 */
+		EEnum SET_FUNCTION_ENUM = eINSTANCE.getSetFunctionEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum <em>Set Parameter Function Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSetParameterFunctionEnum()
+		 * @generated
+		 */
+		EEnum SET_PARAMETER_FUNCTION_ENUM = eINSTANCE.getSetParameterFunctionEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum <em>Set Aggregation Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSetAggregationEnum()
+		 * @generated
+		 */
+		EEnum SET_AGGREGATION_ENUM = eINSTANCE.getSetAggregationEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.AggregationEnum <em>Aggregation Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.AggregationEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getAggregationEnum()
+		 * @generated
+		 */
+		EEnum AGGREGATION_ENUM = eINSTANCE.getAggregationEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.OperatorEnum <em>Operator Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.OperatorEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getOperatorEnum()
+		 * @generated
+		 */
+		EEnum OPERATOR_ENUM = eINSTANCE.getOperatorEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum <em>Sql Aggregation Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getSqlAggregationEnum()
+		 * @generated
+		 */
+		EEnum SQL_AGGREGATION_ENUM = eINSTANCE.getSqlAggregationEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum <em>Value Scale Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getValueScaleEnum()
+		 * @generated
+		 */
+		EEnum VALUE_SCALE_ENUM = eINSTANCE.getValueScaleEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum <em>Task Query Topic Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getTaskQueryTopicEnum()
+		 * @generated
+		 */
+		EEnum TASK_QUERY_TOPIC_ENUM = eINSTANCE.getTaskQueryTopicEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum <em>Task Query Column Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getTaskQueryColumnEnum()
+		 * @generated
+		 */
+		EEnum TASK_QUERY_COLUMN_ENUM = eINSTANCE.getTaskQueryColumnEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum <em>Task Filter Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getTaskFilterEnum()
+		 * @generated
+		 */
+		EEnum TASK_FILTER_ENUM = eINSTANCE.getTaskFilterEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.datamartdsl.OrderEnum <em>Order Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.datamartdsl.OrderEnum
+		 * @see org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDSLPackageImpl#getOrderEnum()
+		 * @generated
+		 */
+		EEnum ORDER_ENUM = eINSTANCE.getOrderEnum();
+
+		/**
+		 * 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.datamartdsl.impl.DatamartDSLPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+	}
+
+} //DatamartDSLPackage
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDefineDerivedMeasure.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDefineDerivedMeasure.java
new file mode 100644
index 0000000..131f0ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDefineDerivedMeasure.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Define Derived Measure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure#getDerivedElement <em>Derived Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefineDerivedMeasure()
+ * @model
+ * @generated
+ */
+public interface DatamartDefineDerivedMeasure extends DatamartCubeElement, DatamartBase {
+	/**
+	 * Returns the value of the '<em><b>Derived Element</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.Expression}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Derived Element</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>Derived Element</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefineDerivedMeasure_DerivedElement()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Expression> getDerivedElement();
+
+} // DatamartDefineDerivedMeasure
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDefinition.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDefinition.java
new file mode 100644
index 0000000..832b18f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDefinition.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Definition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#isDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getDescriptionValue <em>Description Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getSource <em>Source</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getRoles <em>Roles</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefinition()
+ * @model
+ * @generated
+ */
+public interface DatamartDefinition extends DatamartBase {
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefinition_Description()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#isDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #isDescription()
+	 * @generated
+	 */
+	void setDescription(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Description Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description 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>Description Value</em>' attribute.
+	 * @see #setDescriptionValue(String)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefinition_DescriptionValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getDescriptionValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getDescriptionValue <em>Description Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description Value</em>' attribute.
+	 * @see #getDescriptionValue()
+	 * @generated
+	 */
+	void setDescriptionValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Source</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source</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>Source</em>' containment reference.
+	 * @see #setSource(DatamartSource)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefinition_Source()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartSource getSource();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition#getSource <em>Source</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source</em>' containment reference.
+	 * @see #getSource()
+	 * @generated
+	 */
+	void setSource(DatamartSource value);
+
+	/**
+	 * Returns the value of the '<em><b>Roles</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartRole}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Roles</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>Roles</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDefinition_Roles()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartRole> getRoles();
+
+} // DatamartDefinition
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDerivedMeasure.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDerivedMeasure.java
new file mode 100644
index 0000000..bb629a9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDerivedMeasure.java
@@ -0,0 +1,117 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Derived Measure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#isScaled <em>Scaled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getDerivedRef <em>Derived Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDerivedMeasure()
+ * @model
+ * @generated
+ */
+public interface DatamartDerivedMeasure extends Expression, DatamartElement {
+	/**
+	 * Returns the value of the '<em><b>Scaled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scaled</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scaled</em>' attribute.
+	 * @see #setScaled(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDerivedMeasure_Scaled()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isScaled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#isScaled <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scaled</em>' attribute.
+	 * @see #isScaled()
+	 * @generated
+	 */
+	void setScaled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see #setScale(ValueScaleEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDerivedMeasure_Scale()
+	 * @model unique="false"
+	 * @generated
+	 */
+	ValueScaleEnum getScale();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getScale <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see #getScale()
+	 * @generated
+	 */
+	void setScale(ValueScaleEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Derived Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Derived Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Derived Ref</em>' reference.
+	 * @see #setDerivedRef(DatamartDefineDerivedMeasure)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartDerivedMeasure_DerivedRef()
+	 * @model
+	 * @generated
+	 */
+	DatamartDefineDerivedMeasure getDerivedRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure#getDerivedRef <em>Derived Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Derived Ref</em>' reference.
+	 * @see #getDerivedRef()
+	 * @generated
+	 */
+	void setDerivedRef(DatamartDefineDerivedMeasure value);
+
+} // DatamartDerivedMeasure
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartElement.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartElement.java
new file mode 100644
index 0000000..6b2f366
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartElement.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartElement()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface DatamartElement extends DatamartLazyResolver {
+} // DatamartElement
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartEntity.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartEntity.java
new file mode 100644
index 0000000..5b6b3a7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartEntity.java
@@ -0,0 +1,229 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getEntityRef <em>Entity Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getNavigations <em>Navigations</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getConditions <em>Conditions</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getOrdering <em>Ordering</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMinCountRows <em>Filler Min Count Rows</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMaxCountRows <em>Filler Max Count Rows</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#isTracking <em>Tracking</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerDatas <em>Filler Datas</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity()
+ * @model
+ * @generated
+ */
+public interface DatamartEntity extends DatamartSource {
+	/**
+	 * Returns the value of the '<em><b>Entity Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Entity Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Entity Ref</em>' reference.
+	 * @see #setEntityRef(LEntity)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_EntityRef()
+	 * @model
+	 * @generated
+	 */
+	LEntity getEntityRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getEntityRef <em>Entity Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Entity Ref</em>' reference.
+	 * @see #getEntityRef()
+	 * @generated
+	 */
+	void setEntityRef(LEntity value);
+
+	/**
+	 * Returns the value of the '<em><b>Navigations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Navigations</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>Navigations</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_Navigations()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartNavigation> getNavigations();
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty}.
+	 * <!-- 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.datamartdsl.DatamartDSLPackage#getDatamartEntity_Properties()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartProperty> getProperties();
+
+	/**
+	 * Returns the value of the '<em><b>Conditions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Conditions</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>Conditions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_Conditions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartCondition> getConditions();
+
+	/**
+	 * Returns the value of the '<em><b>Ordering</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ordering</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>Ordering</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_Ordering()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartOrder> getOrdering();
+
+	/**
+	 * Returns the value of the '<em><b>Filler Min Count Rows</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filler Min Count Rows</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filler Min Count Rows</em>' attribute.
+	 * @see #setFillerMinCountRows(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_FillerMinCountRows()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getFillerMinCountRows();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMinCountRows <em>Filler Min Count Rows</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filler Min Count Rows</em>' attribute.
+	 * @see #getFillerMinCountRows()
+	 * @generated
+	 */
+	void setFillerMinCountRows(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Filler Max Count Rows</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filler Max Count Rows</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filler Max Count Rows</em>' attribute.
+	 * @see #setFillerMaxCountRows(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_FillerMaxCountRows()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getFillerMaxCountRows();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#getFillerMaxCountRows <em>Filler Max Count Rows</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filler Max Count Rows</em>' attribute.
+	 * @see #getFillerMaxCountRows()
+	 * @generated
+	 */
+	void setFillerMaxCountRows(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Tracking</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Tracking</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tracking</em>' attribute.
+	 * @see #setTracking(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_Tracking()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isTracking();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity#isTracking <em>Tracking</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tracking</em>' attribute.
+	 * @see #isTracking()
+	 * @generated
+	 */
+	void setTracking(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Filler Datas</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filler Datas</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>Filler Datas</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartEntity_FillerDatas()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<PropertyFillerData> getFillerDatas();
+
+} // DatamartEntity
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunction.java
new file mode 100644
index 0000000..6b25d80
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunction.java
@@ -0,0 +1,63 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunction#getFunction <em>Function</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartFunction()
+ * @model
+ * @generated
+ */
+public interface DatamartFunction extends DatamartFunctionInterface {
+	/**
+	 * Returns the value of the '<em><b>Function</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.FunctionEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Function</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.FunctionEnum
+	 * @see #setFunction(FunctionEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartFunction_Function()
+	 * @model unique="false"
+	 * @generated
+	 */
+	FunctionEnum getFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunction#getFunction <em>Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.FunctionEnum
+	 * @see #getFunction()
+	 * @generated
+	 */
+	void setFunction(FunctionEnum value);
+
+} // DatamartFunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunctionIntParameter.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunctionIntParameter.java
new file mode 100644
index 0000000..5437df2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunctionIntParameter.java
@@ -0,0 +1,61 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Function Int Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartFunctionIntParameter()
+ * @model
+ * @generated
+ */
+public interface DatamartFunctionIntParameter extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>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>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartFunctionIntParameter_Value()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // DatamartFunctionIntParameter
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunctionInterface.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunctionInterface.java
new file mode 100644
index 0000000..4e0d659
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartFunctionInterface.java
@@ -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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Function Interface</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartFunctionInterface()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface DatamartFunctionInterface extends EObject {
+} // DatamartFunctionInterface
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartHierarchy.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartHierarchy.java
new file mode 100644
index 0000000..06105ef
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartHierarchy.java
@@ -0,0 +1,332 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Hierarchy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isDefaultMember <em>Default Member</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllMember <em>All Member</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllLevels <em>All Levels</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAll <em>All</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isExcept <em>Except</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isOrdered <em>Ordered</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isDescending <em>Descending</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getHierarchyRef <em>Hierarchy Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getLevelRef <em>Level Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getExceptRef <em>Except Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getOrderRef <em>Order Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy()
+ * @model
+ * @generated
+ */
+public interface DatamartHierarchy extends Expression, DatamartElement {
+	/**
+	 * 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.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_DefaultMember()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDefaultMember();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#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>All Member</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>All 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>All Member</em>' attribute.
+	 * @see #setAllMember(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_AllMember()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAllMember();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllMember <em>All Member</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>All Member</em>' attribute.
+	 * @see #isAllMember()
+	 * @generated
+	 */
+	void setAllMember(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>All Levels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>All Levels</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 Levels</em>' attribute.
+	 * @see #setAllLevels(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_AllLevels()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAllLevels();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAllLevels <em>All Levels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>All Levels</em>' attribute.
+	 * @see #isAllLevels()
+	 * @generated
+	 */
+	void setAllLevels(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>All</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>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>All</em>' attribute.
+	 * @see #setAll(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_All()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAll();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isAll <em>All</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>All</em>' attribute.
+	 * @see #isAll()
+	 * @generated
+	 */
+	void setAll(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Except</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Except</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Except</em>' attribute.
+	 * @see #setExcept(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_Except()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isExcept();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isExcept <em>Except</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Except</em>' attribute.
+	 * @see #isExcept()
+	 * @generated
+	 */
+	void setExcept(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Ordered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ordered</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ordered</em>' attribute.
+	 * @see #setOrdered(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_Ordered()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isOrdered();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isOrdered <em>Ordered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ordered</em>' attribute.
+	 * @see #isOrdered()
+	 * @generated
+	 */
+	void setOrdered(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Descending</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Descending</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Descending</em>' attribute.
+	 * @see #setDescending(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_Descending()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDescending();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#isDescending <em>Descending</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Descending</em>' attribute.
+	 * @see #isDescending()
+	 * @generated
+	 */
+	void setDescending(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Hierarchy Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hierarchy Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hierarchy Ref</em>' reference.
+	 * @see #setHierarchyRef(CubeHierarchy)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_HierarchyRef()
+	 * @model
+	 * @generated
+	 */
+	CubeHierarchy getHierarchyRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getHierarchyRef <em>Hierarchy Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hierarchy Ref</em>' reference.
+	 * @see #getHierarchyRef()
+	 * @generated
+	 */
+	void setHierarchyRef(CubeHierarchy value);
+
+	/**
+	 * Returns the value of the '<em><b>Level Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Level Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Level Ref</em>' reference.
+	 * @see #setLevelRef(CubeLevel)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_LevelRef()
+	 * @model
+	 * @generated
+	 */
+	CubeLevel getLevelRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getLevelRef <em>Level Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Level Ref</em>' reference.
+	 * @see #getLevelRef()
+	 * @generated
+	 */
+	void setLevelRef(CubeLevel value);
+
+	/**
+	 * Returns the value of the '<em><b>Except Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Except Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Except Ref</em>' reference.
+	 * @see #setExceptRef(CubeLevel)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_ExceptRef()
+	 * @model
+	 * @generated
+	 */
+	CubeLevel getExceptRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getExceptRef <em>Except Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Except Ref</em>' reference.
+	 * @see #getExceptRef()
+	 * @generated
+	 */
+	void setExceptRef(CubeLevel value);
+
+	/**
+	 * Returns the value of the '<em><b>Order Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Order 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>Order Ref</em>' containment reference.
+	 * @see #setOrderRef(DatamartElement)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartHierarchy_OrderRef()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartElement getOrderRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy#getOrderRef <em>Order Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Order Ref</em>' containment reference.
+	 * @see #getOrderRef()
+	 * @generated
+	 */
+	void setOrderRef(DatamartElement value);
+
+} // DatamartHierarchy
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartLazyResolver.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartLazyResolver.java
new file mode 100644
index 0000000..676aeca
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartLazyResolver.java
@@ -0,0 +1,39 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartLazyResolver()
+ * @model
+ * @generated
+ */
+public interface DatamartLazyResolver extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.datamartdsl.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);
+
+} // DatamartLazyResolver
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMeasure.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMeasure.java
new file mode 100644
index 0000000..ca441a6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMeasure.java
@@ -0,0 +1,118 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Measure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#isScaled <em>Scaled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getMeasureRef <em>Measure Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartMeasure()
+ * @model
+ * @generated
+ */
+public interface DatamartMeasure extends Expression, DatamartElement {
+	/**
+	 * Returns the value of the '<em><b>Scaled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scaled</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scaled</em>' attribute.
+	 * @see #setScaled(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartMeasure_Scaled()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isScaled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#isScaled <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scaled</em>' attribute.
+	 * @see #isScaled()
+	 * @generated
+	 */
+	void setScaled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see #setScale(ValueScaleEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartMeasure_Scale()
+	 * @model unique="false"
+	 * @generated
+	 */
+	ValueScaleEnum getScale();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getScale <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see #getScale()
+	 * @generated
+	 */
+	void setScale(ValueScaleEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Measure Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Measure Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Measure Ref</em>' reference.
+	 * @see #setMeasureRef(CubeMeasure)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartMeasure_MeasureRef()
+	 * @model
+	 * @generated
+	 */
+	CubeMeasure getMeasureRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure#getMeasureRef <em>Measure Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Measure Ref</em>' reference.
+	 * @see #getMeasureRef()
+	 * @generated
+	 */
+	void setMeasureRef(CubeMeasure value);
+
+} // DatamartMeasure
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMember.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMember.java
new file mode 100644
index 0000000..b72bc9f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMember.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Member</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartMember()
+ * @model
+ * @generated
+ */
+public interface DatamartMember extends DatamartNavigation {
+} // DatamartMember
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMemberTuple.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMemberTuple.java
new file mode 100644
index 0000000..74d838d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartMemberTuple.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Member Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartMemberTuple()
+ * @model
+ * @generated
+ */
+public interface DatamartMemberTuple extends DatamartAggregationExpression {
+} // DatamartMemberTuple
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartModel.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartModel.java
new file mode 100644
index 0000000..93d5feb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartModel.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartModel()
+ * @model
+ * @generated
+ */
+public interface DatamartModel extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartPackage}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Packages</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>Packages</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartModel_Packages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartPackage> getPackages();
+
+} // DatamartModel
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartNavigation.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartNavigation.java
new file mode 100644
index 0000000..38678be
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartNavigation.java
@@ -0,0 +1,87 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Navigation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getJoinRef <em>Join Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getDatamartEntity <em>Datamart Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartNavigation()
+ * @model
+ * @generated
+ */
+public interface DatamartNavigation extends DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Join Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Join 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>Join Ref</em>' containment reference.
+	 * @see #setJoinRef(DatamartReference)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartNavigation_JoinRef()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartReference getJoinRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getJoinRef <em>Join Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Join Ref</em>' containment reference.
+	 * @see #getJoinRef()
+	 * @generated
+	 */
+	void setJoinRef(DatamartReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Datamart Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Datamart 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>Datamart Entity</em>' containment reference.
+	 * @see #setDatamartEntity(DatamartEntity)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartNavigation_DatamartEntity()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartEntity getDatamartEntity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation#getDatamartEntity <em>Datamart Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Datamart Entity</em>' containment reference.
+	 * @see #getDatamartEntity()
+	 * @generated
+	 */
+	void setDatamartEntity(DatamartEntity value);
+
+} // DatamartNavigation
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartOrder.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartOrder.java
new file mode 100644
index 0000000..5e5519b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartOrder.java
@@ -0,0 +1,93 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Order</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderBy <em>Order By</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderHow <em>Order How</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartOrder()
+ * @model
+ * @generated
+ */
+public interface DatamartOrder extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Order By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Order By</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Order By</em>' reference.
+	 * @see #setOrderBy(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartOrder_OrderBy()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getOrderBy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderBy <em>Order By</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Order By</em>' reference.
+	 * @see #getOrderBy()
+	 * @generated
+	 */
+	void setOrderBy(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Order How</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.OrderEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Order How</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Order How</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OrderEnum
+	 * @see #setOrderHow(OrderEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartOrder_OrderHow()
+	 * @model unique="false"
+	 * @generated
+	 */
+	OrderEnum getOrderHow();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder#getOrderHow <em>Order How</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Order How</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.OrderEnum
+	 * @see #getOrderHow()
+	 * @generated
+	 */
+	void setOrderHow(OrderEnum value);
+
+} // DatamartOrder
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartOwner.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartOwner.java
new file mode 100644
index 0000000..94c67b1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartOwner.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Owner</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartOwner()
+ * @model
+ * @generated
+ */
+public interface DatamartOwner extends DatamartNavigation {
+} // DatamartOwner
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartPackage.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartPackage.java
new file mode 100644
index 0000000..b358ce1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartPackage.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Datamart Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartPackage#getDefinitions <em>Definitions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartPackage()
+ * @model
+ * @generated
+ */
+public interface DatamartPackage extends LPackage {
+	/**
+	 * Returns the value of the '<em><b>Definitions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Definitions</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>Definitions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartPackage_Definitions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartDefinition> getDefinitions();
+
+} // DatamartPackage
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartParameterFunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartParameterFunction.java
new file mode 100644
index 0000000..59f94c9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartParameterFunction.java
@@ -0,0 +1,90 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Parameter Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartParameterFunction()
+ * @model
+ * @generated
+ */
+public interface DatamartParameterFunction extends DatamartFunctionInterface {
+	/**
+	 * Returns the value of the '<em><b>Function</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Function</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum
+	 * @see #setFunction(ParameterFunctionEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartParameterFunction_Function()
+	 * @model unique="false"
+	 * @generated
+	 */
+	ParameterFunctionEnum getFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getFunction <em>Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum
+	 * @see #getFunction()
+	 * @generated
+	 */
+	void setFunction(ParameterFunctionEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference.
+	 * @see #setParameter(DatamartFunctionIntParameter)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartParameterFunction_Parameter()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartFunctionIntParameter getParameter();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction#getParameter <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter</em>' containment reference.
+	 * @see #getParameter()
+	 * @generated
+	 */
+	void setParameter(DatamartFunctionIntParameter value);
+
+} // DatamartParameterFunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartProperty.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartProperty.java
new file mode 100644
index 0000000..3808578
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartProperty.java
@@ -0,0 +1,232 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isAggregated <em>Aggregated</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isScaled <em>Scaled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isPlaced <em>Placed</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAxis <em>Axis</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAggregate <em>Aggregate</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getPropertyRef <em>Property Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty()
+ * @model
+ * @generated
+ */
+public interface DatamartProperty extends DatamartLazyResolver, Expression {
+	/**
+	 * Returns the value of the '<em><b>Aggregated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Aggregated</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Aggregated</em>' attribute.
+	 * @see #setAggregated(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_Aggregated()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAggregated();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isAggregated <em>Aggregated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aggregated</em>' attribute.
+	 * @see #isAggregated()
+	 * @generated
+	 */
+	void setAggregated(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Scaled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scaled</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scaled</em>' attribute.
+	 * @see #setScaled(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_Scaled()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isScaled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isScaled <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scaled</em>' attribute.
+	 * @see #isScaled()
+	 * @generated
+	 */
+	void setScaled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Placed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Placed</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Placed</em>' attribute.
+	 * @see #setPlaced(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_Placed()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isPlaced();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#isPlaced <em>Placed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Placed</em>' attribute.
+	 * @see #isPlaced()
+	 * @generated
+	 */
+	void setPlaced(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Axis</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.AxisEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Axis</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Axis</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+	 * @see #setAxis(AxisEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_Axis()
+	 * @model unique="false"
+	 * @generated
+	 */
+	AxisEnum getAxis();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAxis <em>Axis</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Axis</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+	 * @see #getAxis()
+	 * @generated
+	 */
+	void setAxis(AxisEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Aggregate</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Aggregate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Aggregate</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum
+	 * @see #setAggregate(SqlAggregationEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_Aggregate()
+	 * @model unique="false"
+	 * @generated
+	 */
+	SqlAggregationEnum getAggregate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getAggregate <em>Aggregate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aggregate</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum
+	 * @see #getAggregate()
+	 * @generated
+	 */
+	void setAggregate(SqlAggregationEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see #setScale(ValueScaleEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_Scale()
+	 * @model unique="false"
+	 * @generated
+	 */
+	ValueScaleEnum getScale();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getScale <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
+	 * @see #getScale()
+	 * @generated
+	 */
+	void setScale(ValueScaleEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Property Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Property Ref</em>' reference.
+	 * @see #setPropertyRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartProperty_PropertyRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getPropertyRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty#getPropertyRef <em>Property Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Property Ref</em>' reference.
+	 * @see #getPropertyRef()
+	 * @generated
+	 */
+	void setPropertyRef(LEntityAttribute value);
+
+} // DatamartProperty
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartReference.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartReference.java
new file mode 100644
index 0000000..9dd3ba3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartReference.java
@@ -0,0 +1,61 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartReference()
+ * @model
+ * @generated
+ */
+public interface DatamartReference extends DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ref</em>' reference.
+	 * @see #setRef(LEntityReference)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartReference_Ref()
+	 * @model
+	 * @generated
+	 */
+	LEntityReference getRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartReference#getRef <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref</em>' reference.
+	 * @see #getRef()
+	 * @generated
+	 */
+	void setRef(LEntityReference value);
+
+} // DatamartReference
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartRole.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartRole.java
new file mode 100644
index 0000000..0af3606
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartRole.java
@@ -0,0 +1,61 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.xtext.authorizationdsl.Role;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Role</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartRole#getAssignedRole <em>Assigned Role</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartRole()
+ * @model
+ * @generated
+ */
+public interface DatamartRole extends DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Assigned Role</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Assigned Role</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Assigned Role</em>' reference.
+	 * @see #setAssignedRole(Role)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartRole_AssignedRole()
+	 * @model
+	 * @generated
+	 */
+	Role getAssignedRole();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartRole#getAssignedRole <em>Assigned Role</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Assigned Role</em>' reference.
+	 * @see #getAssignedRole()
+	 * @generated
+	 */
+	void setAssignedRole(Role value);
+
+} // DatamartRole
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetAggregation.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetAggregation.java
new file mode 100644
index 0000000..621a2b4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetAggregation.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Set Aggregation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetAggregation()
+ * @model
+ * @generated
+ */
+public interface DatamartSetAggregation extends DatamartAggregationExpression {
+} // DatamartSetAggregation
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetAggregationFunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetAggregationFunction.java
new file mode 100644
index 0000000..c2754c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetAggregationFunction.java
@@ -0,0 +1,90 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Set Aggregation Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetAggregationFunction()
+ * @model
+ * @generated
+ */
+public interface DatamartSetAggregationFunction extends DatamartAggregationFunctionInterface {
+	/**
+	 * Returns the value of the '<em><b>Aggregation</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Aggregation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Aggregation</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum
+	 * @see #setAggregation(SetAggregationEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetAggregationFunction_Aggregation()
+	 * @model unique="false"
+	 * @generated
+	 */
+	SetAggregationEnum getAggregation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getAggregation <em>Aggregation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aggregation</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum
+	 * @see #getAggregation()
+	 * @generated
+	 */
+	void setAggregation(SetAggregationEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference.
+	 * @see #setParameter(DatamartFunctionIntParameter)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetAggregationFunction_Parameter()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartFunctionIntParameter getParameter();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction#getParameter <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter</em>' containment reference.
+	 * @see #getParameter()
+	 * @generated
+	 */
+	void setParameter(DatamartFunctionIntParameter value);
+
+} // DatamartSetAggregationFunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetFunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetFunction.java
new file mode 100644
index 0000000..ce434f5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetFunction.java
@@ -0,0 +1,63 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Set Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction#getSetFunction <em>Set Function</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetFunction()
+ * @model
+ * @generated
+ */
+public interface DatamartSetFunction extends DatamartSetFunctionInterface {
+	/**
+	 * Returns the value of the '<em><b>Set Function</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Set Function</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Set Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum
+	 * @see #setSetFunction(SetFunctionEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetFunction_SetFunction()
+	 * @model unique="false"
+	 * @generated
+	 */
+	SetFunctionEnum getSetFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction#getSetFunction <em>Set Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Set Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum
+	 * @see #getSetFunction()
+	 * @generated
+	 */
+	void setSetFunction(SetFunctionEnum value);
+
+} // DatamartSetFunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetFunctionInterface.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetFunctionInterface.java
new file mode 100644
index 0000000..8330021
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetFunctionInterface.java
@@ -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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Set Function Interface</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetFunctionInterface()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface DatamartSetFunctionInterface extends EObject {
+} // DatamartSetFunctionInterface
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetParameterFunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetParameterFunction.java
new file mode 100644
index 0000000..5c3b291
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetParameterFunction.java
@@ -0,0 +1,90 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Set Parameter Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getSetFunction <em>Set Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetParameterFunction()
+ * @model
+ * @generated
+ */
+public interface DatamartSetParameterFunction extends DatamartSetFunctionInterface {
+	/**
+	 * Returns the value of the '<em><b>Set Function</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Set Function</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Set Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum
+	 * @see #setSetFunction(SetParameterFunctionEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetParameterFunction_SetFunction()
+	 * @model unique="false"
+	 * @generated
+	 */
+	SetParameterFunctionEnum getSetFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getSetFunction <em>Set Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Set Function</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum
+	 * @see #getSetFunction()
+	 * @generated
+	 */
+	void setSetFunction(SetParameterFunctionEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parameter</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>Parameter</em>' containment reference.
+	 * @see #setParameter(DatamartFunctionIntParameter)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetParameterFunction_Parameter()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartFunctionIntParameter getParameter();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction#getParameter <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parameter</em>' containment reference.
+	 * @see #getParameter()
+	 * @generated
+	 */
+	void setParameter(DatamartFunctionIntParameter value);
+
+} // DatamartSetParameterFunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetTuple.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetTuple.java
new file mode 100644
index 0000000..081ee61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSetTuple.java
@@ -0,0 +1,87 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Set Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetTuple()
+ * @model
+ * @generated
+ */
+public interface DatamartSetTuple extends Expression {
+	/**
+	 * Returns the value of the '<em><b>Left</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Left</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>Left</em>' containment reference.
+	 * @see #setLeft(Expression)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetTuple_Left()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getLeft();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getLeft <em>Left</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Left</em>' containment reference.
+	 * @see #getLeft()
+	 * @generated
+	 */
+	void setLeft(Expression value);
+
+	/**
+	 * Returns the value of the '<em><b>Right</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Right</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>Right</em>' containment reference.
+	 * @see #setRight(DatamartHierarchy)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSetTuple_Right()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartHierarchy getRight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple#getRight <em>Right</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Right</em>' containment reference.
+	 * @see #getRight()
+	 * @generated
+	 */
+	void setRight(DatamartHierarchy value);
+
+} // DatamartSetTuple
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSlicer.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSlicer.java
new file mode 100644
index 0000000..fe5a261
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSlicer.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Slicer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer#getElement <em>Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSlicer()
+ * @model
+ * @generated
+ */
+public interface DatamartSlicer extends DatamartCubeElement {
+	/**
+	 * Returns the value of the '<em><b>Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Element</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>Element</em>' containment reference.
+	 * @see #setElement(DatamartElement)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSlicer_Element()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartElement getElement();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer#getElement <em>Element</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Element</em>' containment reference.
+	 * @see #getElement()
+	 * @generated
+	 */
+	void setElement(DatamartElement value);
+
+} // DatamartSlicer
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSource.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSource.java
new file mode 100644
index 0000000..eab1c31
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartSource.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Source</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartSource()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface DatamartSource extends DatamartLazyResolver {
+} // DatamartSource
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartTask.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartTask.java
new file mode 100644
index 0000000..a378ebd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartTask.java
@@ -0,0 +1,98 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Task</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getTaskQuery <em>Task Query</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getColumns <em>Columns</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getConditions <em>Conditions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartTask()
+ * @model
+ * @generated
+ */
+public interface DatamartTask extends DatamartSource {
+	/**
+	 * Returns the value of the '<em><b>Task Query</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Task Query</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Task Query</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum
+	 * @see #setTaskQuery(TaskQueryTopicEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartTask_TaskQuery()
+	 * @model unique="false"
+	 * @generated
+	 */
+	TaskQueryTopicEnum getTaskQuery();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask#getTaskQuery <em>Task Query</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Task Query</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum
+	 * @see #getTaskQuery()
+	 * @generated
+	 */
+	void setTaskQuery(TaskQueryTopicEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Columns</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartColumn}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Columns</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>Columns</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartTask_Columns()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartColumn> getColumns();
+
+	/**
+	 * Returns the value of the '<em><b>Conditions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Conditions</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>Conditions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartTask_Conditions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<DatamartCondition> getConditions();
+
+} // DatamartTask
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartTaskFilter.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartTaskFilter.java
new file mode 100644
index 0000000..9b58144
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartTaskFilter.java
@@ -0,0 +1,63 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Datamart Task Filter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter#getFilterRef <em>Filter Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartTaskFilter()
+ * @model
+ * @generated
+ */
+public interface DatamartTaskFilter extends Expression, DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Filter Ref</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filter Ref</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filter Ref</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum
+	 * @see #setFilterRef(TaskFilterEnum)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDatamartTaskFilter_FilterRef()
+	 * @model unique="false"
+	 * @generated
+	 */
+	TaskFilterEnum getFilterRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter#getFilterRef <em>Filter Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filter Ref</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum
+	 * @see #getFilterRef()
+	 * @generated
+	 */
+	void setFilterRef(TaskFilterEnum value);
+
+} // DatamartTaskFilter
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Disjunction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Disjunction.java
new file mode 100644
index 0000000..a230240
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Disjunction.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Disjunction</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDisjunction()
+ * @model
+ * @generated
+ */
+public interface Disjunction extends Calculation {
+} // Disjunction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Division.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Division.java
new file mode 100644
index 0000000..87e8f05
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Division.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Division</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getDivision()
+ * @model
+ * @generated
+ */
+public interface Division extends Calculation {
+} // Division
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/EventBrokerDataMart.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/EventBrokerDataMart.java
new file mode 100644
index 0000000..247bd85
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/EventBrokerDataMart.java
@@ -0,0 +1,87 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Event Broker Data Mart</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getFilter <em>Filter</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getDatamartDef <em>Datamart Def</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getEventBrokerDataMart()
+ * @model
+ * @generated
+ */
+public interface EventBrokerDataMart extends DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Filter</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filter</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filter</em>' attribute.
+	 * @see #setFilter(String)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getEventBrokerDataMart_Filter()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getFilter();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getFilter <em>Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filter</em>' attribute.
+	 * @see #getFilter()
+	 * @generated
+	 */
+	void setFilter(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Datamart Def</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Datamart Def</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Datamart Def</em>' reference.
+	 * @see #setDatamartDef(DatamartDefinition)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getEventBrokerDataMart_DatamartDef()
+	 * @model
+	 * @generated
+	 */
+	DatamartDefinition getDatamartDef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart#getDatamartDef <em>Datamart Def</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Datamart Def</em>' reference.
+	 * @see #getDatamartDef()
+	 * @generated
+	 */
+	void setDatamartDef(DatamartDefinition value);
+
+} // EventBrokerDataMart
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Expression.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Expression.java
new file mode 100644
index 0000000..33d9251
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Expression.java
@@ -0,0 +1,330 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isFiltered <em>Filtered</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isSelected <em>Selected</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isOptional <em>Optional</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getNumberValue <em>Number Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getStringValue <em>String Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getHierarchy <em>Hierarchy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getSet <em>Set</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getSetFunction <em>Set Function</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression()
+ * @model
+ * @generated
+ */
+public interface Expression extends DatamartElement {
+	/**
+	 * Returns the value of the '<em><b>Filtered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filtered</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filtered</em>' attribute.
+	 * @see #setFiltered(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Filtered()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isFiltered();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isFiltered <em>Filtered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filtered</em>' attribute.
+	 * @see #isFiltered()
+	 * @generated
+	 */
+	void setFiltered(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Selected</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Selected</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Selected</em>' attribute.
+	 * @see #setSelected(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Selected()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isSelected();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isSelected <em>Selected</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Selected</em>' attribute.
+	 * @see #isSelected()
+	 * @generated
+	 */
+	void setSelected(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Optional</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Optional</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Optional</em>' attribute.
+	 * @see #setOptional(boolean)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Optional()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isOptional();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#isOptional <em>Optional</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Optional</em>' attribute.
+	 * @see #isOptional()
+	 * @generated
+	 */
+	void setOptional(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Number Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Number 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>Number Value</em>' attribute.
+	 * @see #setNumberValue(String)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_NumberValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getNumberValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getNumberValue <em>Number Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Number Value</em>' attribute.
+	 * @see #getNumberValue()
+	 * @generated
+	 */
+	void setNumberValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>String Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>String 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>String Value</em>' attribute.
+	 * @see #setStringValue(String)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_StringValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getStringValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getStringValue <em>String Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>String Value</em>' attribute.
+	 * @see #getStringValue()
+	 * @generated
+	 */
+	void setStringValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>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>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Value()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Hierarchy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hierarchy</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>Hierarchy</em>' containment reference.
+	 * @see #setHierarchy(DatamartHierarchy)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Hierarchy()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartHierarchy getHierarchy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getHierarchy <em>Hierarchy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hierarchy</em>' containment reference.
+	 * @see #getHierarchy()
+	 * @generated
+	 */
+	void setHierarchy(DatamartHierarchy value);
+
+	/**
+	 * Returns the value of the '<em><b>Aggregation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Aggregation</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>Aggregation</em>' containment reference.
+	 * @see #setAggregation(DatamartAggregationFunctionInterface)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Aggregation()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartAggregationFunctionInterface getAggregation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getAggregation <em>Aggregation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aggregation</em>' containment reference.
+	 * @see #getAggregation()
+	 * @generated
+	 */
+	void setAggregation(DatamartAggregationFunctionInterface value);
+
+	/**
+	 * Returns the value of the '<em><b>Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Function</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>Function</em>' containment reference.
+	 * @see #setFunction(DatamartFunctionInterface)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Function()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartFunctionInterface getFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getFunction <em>Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Function</em>' containment reference.
+	 * @see #getFunction()
+	 * @generated
+	 */
+	void setFunction(DatamartFunctionInterface value);
+
+	/**
+	 * Returns the value of the '<em><b>Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Set</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>Set</em>' containment reference.
+	 * @see #setSet(Expression)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_Set()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Expression getSet();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getSet <em>Set</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Set</em>' containment reference.
+	 * @see #getSet()
+	 * @generated
+	 */
+	void setSet(Expression value);
+
+	/**
+	 * Returns the value of the '<em><b>Set Function</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Set Function</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>Set Function</em>' containment reference.
+	 * @see #setSetFunction(DatamartSetFunctionInterface)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getExpression_SetFunction()
+	 * @model containment="true"
+	 * @generated
+	 */
+	DatamartSetFunctionInterface getSetFunction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.Expression#getSetFunction <em>Set Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Set Function</em>' containment reference.
+	 * @see #getSetFunction()
+	 * @generated
+	 */
+	void setSetFunction(DatamartSetFunctionInterface value);
+
+} // Expression
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/FunctionEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/FunctionEnum.java
new file mode 100644
index 0000000..71185c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/FunctionEnum.java
@@ -0,0 +1,270 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Function Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getFunctionEnum()
+ * @model
+ * @generated
+ */
+public enum FunctionEnum implements Enumerator {
+	/**
+	 * The '<em><b>PREVMEMBER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PREVMEMBER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PREVMEMBER(0, "PREVMEMBER", "previous"),
+
+	/**
+	 * The '<em><b>NEXTMEMBER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NEXTMEMBER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NEXTMEMBER(0, "NEXTMEMBER", "next"),
+
+	/**
+	 * The '<em><b>FIRSTCHILD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FIRSTCHILD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FIRSTCHILD(0, "FIRSTCHILD", "first"),
+
+	/**
+	 * The '<em><b>LASTCHILD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LASTCHILD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LASTCHILD(0, "LASTCHILD", "last");
+
+	/**
+	 * The '<em><b>PREVMEMBER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PREVMEMBER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PREVMEMBER
+	 * @model literal="previous"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PREVMEMBER_VALUE = 0;
+
+	/**
+	 * The '<em><b>NEXTMEMBER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NEXTMEMBER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NEXTMEMBER
+	 * @model literal="next"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NEXTMEMBER_VALUE = 0;
+
+	/**
+	 * The '<em><b>FIRSTCHILD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>FIRSTCHILD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #FIRSTCHILD
+	 * @model literal="first"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FIRSTCHILD_VALUE = 0;
+
+	/**
+	 * The '<em><b>LASTCHILD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LASTCHILD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LASTCHILD
+	 * @model literal="last"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LASTCHILD_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final FunctionEnum[] VALUES_ARRAY =
+		new FunctionEnum[] {
+			PREVMEMBER,
+			NEXTMEMBER,
+			FIRSTCHILD,
+			LASTCHILD,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<FunctionEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Function Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FunctionEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FunctionEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Function Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FunctionEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FunctionEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Function Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FunctionEnum get(int value) {
+		switch (value) {
+			case PREVMEMBER_VALUE: return PREVMEMBER;
+		}
+		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 FunctionEnum(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;
+	}
+	
+} //FunctionEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Multiplication.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Multiplication.java
new file mode 100644
index 0000000..2219343
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Multiplication.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multiplication</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getMultiplication()
+ * @model
+ * @generated
+ */
+public interface Multiplication extends Calculation {
+} // Multiplication
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/OperatorEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/OperatorEnum.java
new file mode 100644
index 0000000..85711b4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/OperatorEnum.java
@@ -0,0 +1,322 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Operator Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getOperatorEnum()
+ * @model
+ * @generated
+ */
+public enum OperatorEnum implements Enumerator {
+	/**
+	 * The '<em><b>EQUALS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EQUALS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EQUALS(0, "EQUALS", "="),
+
+	/**
+	 * The '<em><b>LESS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LESS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LESS(0, "LESS", "<"),
+
+	/**
+	 * The '<em><b>GREATER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREATER(0, "GREATER", ">"),
+
+	/**
+	 * The '<em><b>LESSEQUAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LESSEQUAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LESSEQUAL(0, "LESSEQUAL", "<="),
+
+	/**
+	 * The '<em><b>GREATEREQUAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GREATEREQUAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREATEREQUAL(0, "GREATEREQUAL", ">="),
+
+	/**
+	 * The '<em><b>LIKE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LIKE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LIKE(0, "LIKE", "like");
+
+	/**
+	 * The '<em><b>EQUALS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>EQUALS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EQUALS
+	 * @model literal="="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EQUALS_VALUE = 0;
+
+	/**
+	 * The '<em><b>LESS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LESS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LESS
+	 * @model literal="<"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LESS_VALUE = 0;
+
+	/**
+	 * The '<em><b>GREATER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>GREATER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GREATER
+	 * @model literal=">"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREATER_VALUE = 0;
+
+	/**
+	 * The '<em><b>LESSEQUAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LESSEQUAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LESSEQUAL
+	 * @model literal="<="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LESSEQUAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>GREATEREQUAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>GREATEREQUAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GREATEREQUAL
+	 * @model literal=">="
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREATEREQUAL_VALUE = 0;
+
+	/**
+	 * The '<em><b>LIKE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LIKE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LIKE
+	 * @model literal="like"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LIKE_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Operator Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final OperatorEnum[] VALUES_ARRAY =
+		new OperatorEnum[] {
+			EQUALS,
+			LESS,
+			GREATER,
+			LESSEQUAL,
+			GREATEREQUAL,
+			LIKE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Operator Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<OperatorEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Operator Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OperatorEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			OperatorEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Operator Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OperatorEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			OperatorEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Operator Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OperatorEnum get(int value) {
+		switch (value) {
+			case EQUALS_VALUE: return EQUALS;
+		}
+		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 OperatorEnum(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;
+	}
+	
+} //OperatorEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/OrderEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/OrderEnum.java
new file mode 100644
index 0000000..faa6a77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/OrderEnum.java
@@ -0,0 +1,218 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Order Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getOrderEnum()
+ * @model
+ * @generated
+ */
+public enum OrderEnum implements Enumerator {
+	/**
+	 * The '<em><b>ASC</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ASC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ASC(0, "ASC", "ascending"),
+
+	/**
+	 * The '<em><b>DESC</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DESC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DESC(0, "DESC", "descending");
+
+	/**
+	 * The '<em><b>ASC</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ASC</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ASC
+	 * @model literal="ascending"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ASC_VALUE = 0;
+
+	/**
+	 * The '<em><b>DESC</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DESC</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DESC
+	 * @model literal="descending"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DESC_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Order Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final OrderEnum[] VALUES_ARRAY =
+		new OrderEnum[] {
+			ASC,
+			DESC,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Order Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<OrderEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Order Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OrderEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			OrderEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Order Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OrderEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			OrderEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Order Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OrderEnum get(int value) {
+		switch (value) {
+			case ASC_VALUE: return ASC;
+		}
+		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 OrderEnum(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;
+	}
+	
+} //OrderEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ParameterFunctionEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ParameterFunctionEnum.java
new file mode 100644
index 0000000..c3b381d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ParameterFunctionEnum.java
@@ -0,0 +1,218 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Parameter Function Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getParameterFunctionEnum()
+ * @model
+ * @generated
+ */
+public enum ParameterFunctionEnum implements Enumerator {
+	/**
+	 * The '<em><b>LAG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LAG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LAG(0, "LAG", "lag"),
+
+	/**
+	 * The '<em><b>LEAD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LEAD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LEAD(0, "LEAD", "lead");
+
+	/**
+	 * The '<em><b>LAG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LAG</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LAG
+	 * @model literal="lag"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LAG_VALUE = 0;
+
+	/**
+	 * The '<em><b>LEAD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LEAD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LEAD
+	 * @model literal="lead"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LEAD_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Parameter Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ParameterFunctionEnum[] VALUES_ARRAY =
+		new ParameterFunctionEnum[] {
+			LAG,
+			LEAD,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Parameter Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ParameterFunctionEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Parameter Function Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ParameterFunctionEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ParameterFunctionEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Parameter Function Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ParameterFunctionEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ParameterFunctionEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Parameter Function Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ParameterFunctionEnum get(int value) {
+		switch (value) {
+			case LAG_VALUE: return LAG;
+		}
+		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 ParameterFunctionEnum(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;
+	}
+	
+} //ParameterFunctionEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerData.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerData.java
new file mode 100644
index 0000000..30e6d7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerData.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getPropertyRef <em>Property Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getFillerType <em>Filler Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerData()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerData extends DatamartLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Property Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Property Ref</em>' reference.
+	 * @see #setPropertyRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerData_PropertyRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getPropertyRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getPropertyRef <em>Property Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Property Ref</em>' reference.
+	 * @see #getPropertyRef()
+	 * @generated
+	 */
+	void setPropertyRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Filler Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filler Type</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>Filler Type</em>' containment reference.
+	 * @see #setFillerType(PropertyFillerType)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerData_FillerType()
+	 * @model containment="true"
+	 * @generated
+	 */
+	PropertyFillerType getFillerType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData#getFillerType <em>Filler Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filler Type</em>' containment reference.
+	 * @see #getFillerType()
+	 * @generated
+	 */
+	void setFillerType(PropertyFillerType value);
+
+} // PropertyFillerData
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateFuture.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateFuture.java
new file mode 100644
index 0000000..5a3d621
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateFuture.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Date Future</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture#getDateFutureYears <em>Date Future Years</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDateFuture()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerDateFuture extends PropertyFillerDateType {
+	/**
+	 * Returns the value of the '<em><b>Date Future Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Date Future Years</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Date Future Years</em>' attribute.
+	 * @see #setDateFutureYears(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDateFuture_DateFutureYears()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDateFutureYears();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture#getDateFutureYears <em>Date Future Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Date Future Years</em>' attribute.
+	 * @see #getDateFutureYears()
+	 * @generated
+	 */
+	void setDateFutureYears(int value);
+
+} // PropertyFillerDateFuture
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDatePast.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDatePast.java
new file mode 100644
index 0000000..3b1591d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDatePast.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Date Past</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast#getDatePastYears <em>Date Past Years</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDatePast()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerDatePast extends PropertyFillerDateType {
+	/**
+	 * Returns the value of the '<em><b>Date Past Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Date Past Years</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Date Past Years</em>' attribute.
+	 * @see #setDatePastYears(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDatePast_DatePastYears()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDatePastYears();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast#getDatePastYears <em>Date Past Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Date Past Years</em>' attribute.
+	 * @see #getDatePastYears()
+	 * @generated
+	 */
+	void setDatePastYears(int value);
+
+} // PropertyFillerDatePast
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateRange.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateRange.java
new file mode 100644
index 0000000..0d8acd8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateRange.java
@@ -0,0 +1,87 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Date Range</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateBeginYears <em>Date Begin Years</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateEndYears <em>Date End Years</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDateRange()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerDateRange extends PropertyFillerDateType {
+	/**
+	 * Returns the value of the '<em><b>Date Begin Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Date Begin Years</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Date Begin Years</em>' attribute.
+	 * @see #setDateBeginYears(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDateRange_DateBeginYears()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDateBeginYears();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateBeginYears <em>Date Begin Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Date Begin Years</em>' attribute.
+	 * @see #getDateBeginYears()
+	 * @generated
+	 */
+	void setDateBeginYears(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Date End Years</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Date End Years</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Date End Years</em>' attribute.
+	 * @see #setDateEndYears(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDateRange_DateEndYears()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDateEndYears();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange#getDateEndYears <em>Date End Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Date End Years</em>' attribute.
+	 * @see #getDateEndYears()
+	 * @generated
+	 */
+	void setDateEndYears(int value);
+
+} // PropertyFillerDateRange
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateType.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateType.java
new file mode 100644
index 0000000..95efed7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDateType.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Date Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDateType()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerDateType extends PropertyFillerType {
+} // PropertyFillerDateType
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDoubleType.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDoubleType.java
new file mode 100644
index 0000000..47bd9a9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerDoubleType.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Double Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerDoubleType()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerDoubleType extends PropertyFillerType {
+} // PropertyFillerDoubleType
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerIntegerType.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerIntegerType.java
new file mode 100644
index 0000000..673d04d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerIntegerType.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Integer Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerIntegerType()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerIntegerType extends PropertyFillerType {
+} // PropertyFillerIntegerType
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedDoubleRandom.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedDoubleRandom.java
new file mode 100644
index 0000000..30c84b6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedDoubleRandom.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Signed Double Random</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRandom()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerSignedDoubleRandom extends PropertyFillerDoubleType {
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Double}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Items</em>' attribute list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRandom_Items()
+	 * @model unique="false"
+	 * @generated
+	 */
+	EList<Double> getItems();
+
+} // PropertyFillerSignedDoubleRandom
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedDoubleRange.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedDoubleRange.java
new file mode 100644
index 0000000..5803fb3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedDoubleRange.java
@@ -0,0 +1,196 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Signed Double Range</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getDecimals <em>Decimals</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerSignedDoubleRange extends PropertyFillerDoubleType {
+	/**
+	 * Returns the value of the '<em><b>Decimals</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Decimals</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Decimals</em>' attribute.
+	 * @see #setDecimals(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange_Decimals()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDecimals();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getDecimals <em>Decimals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Decimals</em>' attribute.
+	 * @see #getDecimals()
+	 * @generated
+	 */
+	void setDecimals(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range</em>' attribute.
+	 * @see #setBeginRange(double)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange_BeginRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getBeginRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRange <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range</em>' attribute.
+	 * @see #getBeginRange()
+	 * @generated
+	 */
+	void setBeginRange(double value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range</em>' attribute.
+	 * @see #setEndRange(double)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange_EndRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getEndRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRange <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range</em>' attribute.
+	 * @see #getEndRange()
+	 * @generated
+	 */
+	void setEndRange(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #setBeginRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange_BeginRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getBeginRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getBeginRangeRef <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 */
+	void setBeginRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range Ref</em>' reference.
+	 * @see #setEndRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange_EndRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getEndRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getEndRangeRef <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range Ref</em>' reference.
+	 * @see #getEndRangeRef()
+	 * @generated
+	 */
+	void setEndRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rounded</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rounded</em>' attribute.
+	 * @see #setRounded(double)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedDoubleRange_Rounded()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getRounded();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange#getRounded <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rounded</em>' attribute.
+	 * @see #getRounded()
+	 * @generated
+	 */
+	void setRounded(double value);
+
+} // PropertyFillerSignedDoubleRange
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedIntegerRandom.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedIntegerRandom.java
new file mode 100644
index 0000000..a69b395
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedIntegerRandom.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Signed Integer Random</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRandom()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerSignedIntegerRandom extends PropertyFillerIntegerType {
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Items</em>' attribute list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRandom_Items()
+	 * @model unique="false"
+	 * @generated
+	 */
+	EList<Integer> getItems();
+
+} // PropertyFillerSignedIntegerRandom
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedIntegerRange.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedIntegerRange.java
new file mode 100644
index 0000000..2ca9221
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerSignedIntegerRange.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Signed Integer Range</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRange()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerSignedIntegerRange extends PropertyFillerIntegerType {
+	/**
+	 * Returns the value of the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range</em>' attribute.
+	 * @see #setBeginRange(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRange_BeginRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBeginRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRange <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range</em>' attribute.
+	 * @see #getBeginRange()
+	 * @generated
+	 */
+	void setBeginRange(int value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range</em>' attribute.
+	 * @see #setEndRange(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRange_EndRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getEndRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRange <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range</em>' attribute.
+	 * @see #getEndRange()
+	 * @generated
+	 */
+	void setEndRange(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #setBeginRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRange_BeginRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getBeginRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getBeginRangeRef <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 */
+	void setBeginRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range Ref</em>' reference.
+	 * @see #setEndRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRange_EndRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getEndRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getEndRangeRef <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range Ref</em>' reference.
+	 * @see #getEndRangeRef()
+	 * @generated
+	 */
+	void setEndRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rounded</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rounded</em>' attribute.
+	 * @see #setRounded(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerSignedIntegerRange_Rounded()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getRounded();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange#getRounded <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rounded</em>' attribute.
+	 * @see #getRounded()
+	 * @generated
+	 */
+	void setRounded(int value);
+
+} // PropertyFillerSignedIntegerRange
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextParagraphs.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextParagraphs.java
new file mode 100644
index 0000000..1b27364
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextParagraphs.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Text Paragraphs</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs#getCount <em>Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextParagraphs()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerTextParagraphs extends PropertyFillerTextType {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' attribute.
+	 * @see #setCount(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextParagraphs_Count()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs#getCount <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' attribute.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(int value);
+
+} // PropertyFillerTextParagraphs
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextRandom.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextRandom.java
new file mode 100644
index 0000000..b0ffb02
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextRandom.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Text Random</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextRandom()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerTextRandom extends PropertyFillerTextType {
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Items</em>' attribute list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextRandom_Items()
+	 * @model unique="false"
+	 * @generated
+	 */
+	EList<String> getItems();
+
+} // PropertyFillerTextRandom
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextSentences.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextSentences.java
new file mode 100644
index 0000000..d400488
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextSentences.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Text Sentences</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences#getCount <em>Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextSentences()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerTextSentences extends PropertyFillerTextType {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' attribute.
+	 * @see #setCount(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextSentences_Count()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences#getCount <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' attribute.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(int value);
+
+} // PropertyFillerTextSentences
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextType.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextType.java
new file mode 100644
index 0000000..6e6457d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextType.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Text Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextType()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerTextType extends PropertyFillerType {
+} // PropertyFillerTextType
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextWords.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextWords.java
new file mode 100644
index 0000000..36a90ed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerTextWords.java
@@ -0,0 +1,60 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Text Words</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords#getCount <em>Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextWords()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerTextWords extends PropertyFillerTextType {
+	/**
+	 * Returns the value of the '<em><b>Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count</em>' attribute.
+	 * @see #setCount(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerTextWords_Count()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getCount();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords#getCount <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count</em>' attribute.
+	 * @see #getCount()
+	 * @generated
+	 */
+	void setCount(int value);
+
+} // PropertyFillerTextWords
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerType.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerType.java
new file mode 100644
index 0000000..8fb55a8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerType.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerType()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerType extends DatamartLazyResolver {
+} // PropertyFillerType
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedDoubleRandom.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedDoubleRandom.java
new file mode 100644
index 0000000..aec9d8f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedDoubleRandom.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Unsigned Double Random</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRandom()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerUnsignedDoubleRandom extends PropertyFillerDoubleType {
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Double}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Items</em>' attribute list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRandom_Items()
+	 * @model unique="false"
+	 * @generated
+	 */
+	EList<Double> getItems();
+
+} // PropertyFillerUnsignedDoubleRandom
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedDoubleRange.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedDoubleRange.java
new file mode 100644
index 0000000..42ccef8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedDoubleRange.java
@@ -0,0 +1,196 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Unsigned Double Range</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getDecimals <em>Decimals</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerUnsignedDoubleRange extends PropertyFillerDoubleType {
+	/**
+	 * Returns the value of the '<em><b>Decimals</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Decimals</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Decimals</em>' attribute.
+	 * @see #setDecimals(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange_Decimals()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDecimals();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getDecimals <em>Decimals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Decimals</em>' attribute.
+	 * @see #getDecimals()
+	 * @generated
+	 */
+	void setDecimals(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range</em>' attribute.
+	 * @see #setBeginRange(double)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange_BeginRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getBeginRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRange <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range</em>' attribute.
+	 * @see #getBeginRange()
+	 * @generated
+	 */
+	void setBeginRange(double value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range</em>' attribute.
+	 * @see #setEndRange(double)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange_EndRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getEndRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRange <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range</em>' attribute.
+	 * @see #getEndRange()
+	 * @generated
+	 */
+	void setEndRange(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #setBeginRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange_BeginRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getBeginRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getBeginRangeRef <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 */
+	void setBeginRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range Ref</em>' reference.
+	 * @see #setEndRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange_EndRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getEndRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getEndRangeRef <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range Ref</em>' reference.
+	 * @see #getEndRangeRef()
+	 * @generated
+	 */
+	void setEndRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rounded</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rounded</em>' attribute.
+	 * @see #setRounded(double)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedDoubleRange_Rounded()
+	 * @model unique="false"
+	 * @generated
+	 */
+	double getRounded();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange#getRounded <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rounded</em>' attribute.
+	 * @see #getRounded()
+	 * @generated
+	 */
+	void setRounded(double value);
+
+} // PropertyFillerUnsignedDoubleRange
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedIntegerRandom.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedIntegerRandom.java
new file mode 100644
index 0000000..a5e7494
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedIntegerRandom.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Unsigned Integer Random</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRandom()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerUnsignedIntegerRandom extends PropertyFillerIntegerType {
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Items</em>' attribute list.
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRandom_Items()
+	 * @model unique="false"
+	 * @generated
+	 */
+	EList<Integer> getItems();
+
+} // PropertyFillerUnsignedIntegerRandom
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedIntegerRange.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedIntegerRange.java
new file mode 100644
index 0000000..382fe2a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/PropertyFillerUnsignedIntegerRange.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Filler Unsigned Integer Range</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRange()
+ * @model
+ * @generated
+ */
+public interface PropertyFillerUnsignedIntegerRange extends PropertyFillerIntegerType {
+	/**
+	 * Returns the value of the '<em><b>Begin Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range</em>' attribute.
+	 * @see #setBeginRange(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRange_BeginRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getBeginRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRange <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range</em>' attribute.
+	 * @see #getBeginRange()
+	 * @generated
+	 */
+	void setBeginRange(int value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range</em>' attribute.
+	 * @see #setEndRange(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRange_EndRange()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getEndRange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRange <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range</em>' attribute.
+	 * @see #getEndRange()
+	 * @generated
+	 */
+	void setEndRange(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Begin Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Begin Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #setBeginRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRange_BeginRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getBeginRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getBeginRangeRef <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Begin Range Ref</em>' reference.
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 */
+	void setBeginRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>End Range Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>End Range Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>End Range Ref</em>' reference.
+	 * @see #setEndRangeRef(LEntityAttribute)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRange_EndRangeRef()
+	 * @model
+	 * @generated
+	 */
+	LEntityAttribute getEndRangeRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getEndRangeRef <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>End Range Ref</em>' reference.
+	 * @see #getEndRangeRef()
+	 * @generated
+	 */
+	void setEndRangeRef(LEntityAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Rounded</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rounded</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rounded</em>' attribute.
+	 * @see #setRounded(int)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getPropertyFillerUnsignedIntegerRange_Rounded()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getRounded();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange#getRounded <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rounded</em>' attribute.
+	 * @see #getRounded()
+	 * @generated
+	 */
+	void setRounded(int value);
+
+} // PropertyFillerUnsignedIntegerRange
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetAggregationEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetAggregationEnum.java
new file mode 100644
index 0000000..078941d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetAggregationEnum.java
@@ -0,0 +1,322 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Set Aggregation Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getSetAggregationEnum()
+ * @model
+ * @generated
+ */
+public enum SetAggregationEnum implements Enumerator {
+	/**
+	 * The '<em><b>TOPCOUNT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TOPCOUNT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TOPCOUNT(0, "TOPCOUNT", "topcount"),
+
+	/**
+	 * The '<em><b>TOPSUM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TOPSUM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TOPSUM(0, "TOPSUM", "topsummation"),
+
+	/**
+	 * The '<em><b>TOPPERCENT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TOPPERCENT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TOPPERCENT(0, "TOPPERCENT", "toppercentage"),
+
+	/**
+	 * The '<em><b>BOTTOMCOUNT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOTTOMCOUNT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOTTOMCOUNT(0, "BOTTOMCOUNT", "bottomcount"),
+
+	/**
+	 * The '<em><b>BOTTOMSUM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOTTOMSUM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOTTOMSUM(0, "BOTTOMSUM", "bottomsummation"),
+
+	/**
+	 * The '<em><b>BOTTOMPERCENT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOTTOMPERCENT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOTTOMPERCENT(0, "BOTTOMPERCENT", "bottompercentage");
+
+	/**
+	 * The '<em><b>TOPCOUNT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TOPCOUNT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TOPCOUNT
+	 * @model literal="topcount"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TOPCOUNT_VALUE = 0;
+
+	/**
+	 * The '<em><b>TOPSUM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TOPSUM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TOPSUM
+	 * @model literal="topsummation"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TOPSUM_VALUE = 0;
+
+	/**
+	 * The '<em><b>TOPPERCENT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TOPPERCENT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TOPPERCENT
+	 * @model literal="toppercentage"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TOPPERCENT_VALUE = 0;
+
+	/**
+	 * The '<em><b>BOTTOMCOUNT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BOTTOMCOUNT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BOTTOMCOUNT
+	 * @model literal="bottomcount"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOTTOMCOUNT_VALUE = 0;
+
+	/**
+	 * The '<em><b>BOTTOMSUM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BOTTOMSUM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BOTTOMSUM
+	 * @model literal="bottomsummation"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOTTOMSUM_VALUE = 0;
+
+	/**
+	 * The '<em><b>BOTTOMPERCENT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BOTTOMPERCENT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BOTTOMPERCENT
+	 * @model literal="bottompercentage"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOTTOMPERCENT_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Set Aggregation Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SetAggregationEnum[] VALUES_ARRAY =
+		new SetAggregationEnum[] {
+			TOPCOUNT,
+			TOPSUM,
+			TOPPERCENT,
+			BOTTOMCOUNT,
+			BOTTOMSUM,
+			BOTTOMPERCENT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Set Aggregation Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SetAggregationEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Set Aggregation Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetAggregationEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SetAggregationEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Set Aggregation Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetAggregationEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SetAggregationEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Set Aggregation Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetAggregationEnum get(int value) {
+		switch (value) {
+			case TOPCOUNT_VALUE: return TOPCOUNT;
+		}
+		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 SetAggregationEnum(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;
+	}
+	
+} //SetAggregationEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetFunctionEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetFunctionEnum.java
new file mode 100644
index 0000000..80dc47b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetFunctionEnum.java
@@ -0,0 +1,218 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Set Function Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getSetFunctionEnum()
+ * @model
+ * @generated
+ */
+public enum SetFunctionEnum implements Enumerator {
+	/**
+	 * The '<em><b>YTD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #YTD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	YTD(0, "YTD", "year-to-date"),
+
+	/**
+	 * The '<em><b>PERIODSTODATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PERIODSTODATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PERIODSTODATE(0, "PERIODSTODATE", "periods");
+
+	/**
+	 * The '<em><b>YTD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>YTD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #YTD
+	 * @model literal="year-to-date"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int YTD_VALUE = 0;
+
+	/**
+	 * The '<em><b>PERIODSTODATE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PERIODSTODATE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PERIODSTODATE
+	 * @model literal="periods"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PERIODSTODATE_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Set Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SetFunctionEnum[] VALUES_ARRAY =
+		new SetFunctionEnum[] {
+			YTD,
+			PERIODSTODATE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Set Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SetFunctionEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Set Function Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetFunctionEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SetFunctionEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Set Function Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetFunctionEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SetFunctionEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Set Function Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetFunctionEnum get(int value) {
+		switch (value) {
+			case YTD_VALUE: return YTD;
+		}
+		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 SetFunctionEnum(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;
+	}
+	
+} //SetFunctionEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetParameterFunctionEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetParameterFunctionEnum.java
new file mode 100644
index 0000000..a7c3516
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SetParameterFunctionEnum.java
@@ -0,0 +1,218 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Set Parameter Function Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getSetParameterFunctionEnum()
+ * @model
+ * @generated
+ */
+public enum SetParameterFunctionEnum implements Enumerator {
+	/**
+	 * The '<em><b>TAIL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TAIL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TAIL(0, "TAIL", "tail"),
+
+	/**
+	 * The '<em><b>HEAD</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HEAD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	HEAD(0, "HEAD", "head");
+
+	/**
+	 * The '<em><b>TAIL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TAIL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TAIL
+	 * @model literal="tail"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TAIL_VALUE = 0;
+
+	/**
+	 * The '<em><b>HEAD</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>HEAD</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #HEAD
+	 * @model literal="head"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int HEAD_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Set Parameter Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SetParameterFunctionEnum[] VALUES_ARRAY =
+		new SetParameterFunctionEnum[] {
+			TAIL,
+			HEAD,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Set Parameter Function Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SetParameterFunctionEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Set Parameter Function Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetParameterFunctionEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SetParameterFunctionEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Set Parameter Function Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetParameterFunctionEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SetParameterFunctionEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Set Parameter Function Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SetParameterFunctionEnum get(int value) {
+		switch (value) {
+			case TAIL_VALUE: return TAIL;
+		}
+		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 SetParameterFunctionEnum(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;
+	}
+	
+} //SetParameterFunctionEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SqlAggregationEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SqlAggregationEnum.java
new file mode 100644
index 0000000..511b1b1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/SqlAggregationEnum.java
@@ -0,0 +1,244 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Sql Aggregation Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getSqlAggregationEnum()
+ * @model
+ * @generated
+ */
+public enum SqlAggregationEnum implements Enumerator {
+	/**
+	 * The '<em><b>AVG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AVG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AVG(0, "AVG", "average"),
+
+	/**
+	 * The '<em><b>SUM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUM(0, "SUM", "summation"),
+
+	/**
+	 * 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>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="average"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AVG_VALUE = 0;
+
+	/**
+	 * 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="summation"
+	 * @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;
+
+	/**
+	 * An array of all the '<em><b>Sql Aggregation Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SqlAggregationEnum[] VALUES_ARRAY =
+		new SqlAggregationEnum[] {
+			AVG,
+			SUM,
+			COUNT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Sql Aggregation Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SqlAggregationEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Sql Aggregation Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SqlAggregationEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SqlAggregationEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Sql Aggregation Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SqlAggregationEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SqlAggregationEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Sql Aggregation Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SqlAggregationEnum get(int value) {
+		switch (value) {
+			case AVG_VALUE: return AVG;
+		}
+		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 SqlAggregationEnum(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;
+	}
+	
+} //SqlAggregationEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Subtraction.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Subtraction.java
new file mode 100644
index 0000000..8ef06c1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/Subtraction.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Subtraction</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getSubtraction()
+ * @model
+ * @generated
+ */
+public interface Subtraction extends Calculation {
+} // Subtraction
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskFilterEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskFilterEnum.java
new file mode 100644
index 0000000..16cc90a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskFilterEnum.java
@@ -0,0 +1,218 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Task Filter Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getTaskFilterEnum()
+ * @model
+ * @generated
+ */
+public enum TaskFilterEnum implements Enumerator {
+	/**
+	 * The '<em><b>F1</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #F1_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	F1(0, "F1", "Groups"),
+
+	/**
+	 * The '<em><b>F2</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #F2_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	F2(0, "F2", "Users");
+
+	/**
+	 * The '<em><b>F1</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>F1</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #F1
+	 * @model literal="Groups"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int F1_VALUE = 0;
+
+	/**
+	 * The '<em><b>F2</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>F2</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #F2
+	 * @model literal="Users"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int F2_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Task Filter Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TaskFilterEnum[] VALUES_ARRAY =
+		new TaskFilterEnum[] {
+			F1,
+			F2,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Task Filter Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TaskFilterEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Task Filter Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskFilterEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TaskFilterEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Task Filter Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskFilterEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TaskFilterEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Task Filter Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskFilterEnum get(int value) {
+		switch (value) {
+			case F1_VALUE: return F1;
+		}
+		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 TaskFilterEnum(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;
+	}
+	
+} //TaskFilterEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskQueryColumnEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskQueryColumnEnum.java
new file mode 100644
index 0000000..fec7fc4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskQueryColumnEnum.java
@@ -0,0 +1,530 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Task Query Column Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getTaskQueryColumnEnum()
+ * @model
+ * @generated
+ */
+public enum TaskQueryColumnEnum implements Enumerator {
+	/**
+	 * The '<em><b>P1</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P1_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P1(0, "P1", "Name"),
+
+	/**
+	 * The '<em><b>P2</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P2_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P2(0, "P2", "Priority"),
+
+	/**
+	 * The '<em><b>P3</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P3_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P3(0, "P3", "Status"),
+
+	/**
+	 * The '<em><b>P4</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P4_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P4(0, "P4", "Subject"),
+
+	/**
+	 * The '<em><b>P5</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P5_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P5(0, "P5", "Description"),
+
+	/**
+	 * The '<em><b>P6</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P6_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P6(0, "P6", "ExpirationTime"),
+
+	/**
+	 * The '<em><b>P7</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P7_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P7(0, "P7", "CreatedOn"),
+
+	/**
+	 * The '<em><b>P8</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P8_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P8(0, "P8", "CreatedBy"),
+
+	/**
+	 * The '<em><b>P9</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P9_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P9(0, "P9", "ActivationTime"),
+
+	/**
+	 * The '<em><b>P10</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P10_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P10(0, "P10", "ActualOwner"),
+
+	/**
+	 * The '<em><b>P11</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P11_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P11(0, "P11", "TaskId"),
+
+	/**
+	 * The '<em><b>P12</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P12_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P12(0, "P12", "ProcessId"),
+
+	/**
+	 * The '<em><b>P13</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P13_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P13(0, "P13", "ProcessInstanceId"),
+
+	/**
+	 * The '<em><b>P14</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #P14_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	P14(0, "P14", "ProcessSessionId");
+
+	/**
+	 * The '<em><b>P1</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P1</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P1
+	 * @model literal="Name"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P1_VALUE = 0;
+
+	/**
+	 * The '<em><b>P2</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P2</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P2
+	 * @model literal="Priority"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P2_VALUE = 0;
+
+	/**
+	 * The '<em><b>P3</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P3</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P3
+	 * @model literal="Status"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P3_VALUE = 0;
+
+	/**
+	 * The '<em><b>P4</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P4</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P4
+	 * @model literal="Subject"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P4_VALUE = 0;
+
+	/**
+	 * The '<em><b>P5</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P5</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P5
+	 * @model literal="Description"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P5_VALUE = 0;
+
+	/**
+	 * The '<em><b>P6</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P6</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P6
+	 * @model literal="ExpirationTime"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P6_VALUE = 0;
+
+	/**
+	 * The '<em><b>P7</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P7</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P7
+	 * @model literal="CreatedOn"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P7_VALUE = 0;
+
+	/**
+	 * The '<em><b>P8</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P8</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P8
+	 * @model literal="CreatedBy"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P8_VALUE = 0;
+
+	/**
+	 * The '<em><b>P9</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P9</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P9
+	 * @model literal="ActivationTime"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P9_VALUE = 0;
+
+	/**
+	 * The '<em><b>P10</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P10</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P10
+	 * @model literal="ActualOwner"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P10_VALUE = 0;
+
+	/**
+	 * The '<em><b>P11</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P11</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P11
+	 * @model literal="TaskId"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P11_VALUE = 0;
+
+	/**
+	 * The '<em><b>P12</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P12</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P12
+	 * @model literal="ProcessId"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P12_VALUE = 0;
+
+	/**
+	 * The '<em><b>P13</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P13</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P13
+	 * @model literal="ProcessInstanceId"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P13_VALUE = 0;
+
+	/**
+	 * The '<em><b>P14</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>P14</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #P14
+	 * @model literal="ProcessSessionId"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int P14_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Task Query Column Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TaskQueryColumnEnum[] VALUES_ARRAY =
+		new TaskQueryColumnEnum[] {
+			P1,
+			P2,
+			P3,
+			P4,
+			P5,
+			P6,
+			P7,
+			P8,
+			P9,
+			P10,
+			P11,
+			P12,
+			P13,
+			P14,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Task Query Column Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TaskQueryColumnEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Task Query Column Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskQueryColumnEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TaskQueryColumnEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Task Query Column Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskQueryColumnEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TaskQueryColumnEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Task Query Column Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskQueryColumnEnum get(int value) {
+		switch (value) {
+			case P1_VALUE: return P1;
+		}
+		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 TaskQueryColumnEnum(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;
+	}
+	
+} //TaskQueryColumnEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskQueryTopicEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskQueryTopicEnum.java
new file mode 100644
index 0000000..acca0f6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/TaskQueryTopicEnum.java
@@ -0,0 +1,322 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Task Query Topic Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getTaskQueryTopicEnum()
+ * @model
+ * @generated
+ */
+public enum TaskQueryTopicEnum implements Enumerator {
+	/**
+	 * The '<em><b>Q1</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #Q1_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Q1(0, "Q1", "BusinessAdministrator"),
+
+	/**
+	 * The '<em><b>Q2</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #Q2_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Q2(0, "Q2", "PotentialOwner"),
+
+	/**
+	 * The '<em><b>Q3</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #Q3_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Q3(0, "Q3", "Recipient"),
+
+	/**
+	 * The '<em><b>Q4</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #Q4_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Q4(0, "Q4", "TaskInitiator"),
+
+	/**
+	 * The '<em><b>Q5</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #Q5_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Q5(0, "Q5", "TaskStakeholder"),
+
+	/**
+	 * The '<em><b>Q6</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #Q6_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	Q6(0, "Q6", "ExcludedOwner");
+
+	/**
+	 * The '<em><b>Q1</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Q1</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #Q1
+	 * @model literal="BusinessAdministrator"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Q1_VALUE = 0;
+
+	/**
+	 * The '<em><b>Q2</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Q2</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #Q2
+	 * @model literal="PotentialOwner"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Q2_VALUE = 0;
+
+	/**
+	 * The '<em><b>Q3</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Q3</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #Q3
+	 * @model literal="Recipient"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Q3_VALUE = 0;
+
+	/**
+	 * The '<em><b>Q4</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Q4</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #Q4
+	 * @model literal="TaskInitiator"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Q4_VALUE = 0;
+
+	/**
+	 * The '<em><b>Q5</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Q5</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #Q5
+	 * @model literal="TaskStakeholder"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Q5_VALUE = 0;
+
+	/**
+	 * The '<em><b>Q6</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Q6</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #Q6
+	 * @model literal="ExcludedOwner"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int Q6_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Task Query Topic Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final TaskQueryTopicEnum[] VALUES_ARRAY =
+		new TaskQueryTopicEnum[] {
+			Q1,
+			Q2,
+			Q3,
+			Q4,
+			Q5,
+			Q6,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Task Query Topic Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<TaskQueryTopicEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Task Query Topic Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskQueryTopicEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TaskQueryTopicEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Task Query Topic Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskQueryTopicEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			TaskQueryTopicEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Task Query Topic Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TaskQueryTopicEnum get(int value) {
+		switch (value) {
+			case Q1_VALUE: return Q1;
+		}
+		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 TaskQueryTopicEnum(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;
+	}
+	
+} //TaskQueryTopicEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ValueScaleEnum.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ValueScaleEnum.java
new file mode 100644
index 0000000..4c9e870
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/ValueScaleEnum.java
@@ -0,0 +1,400 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl;
+
+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>Value Scale Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage#getValueScaleEnum()
+ * @model
+ * @generated
+ */
+public enum ValueScaleEnum implements Enumerator {
+	/**
+	 * The '<em><b>AXIS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS(0, "AXIS", "group1"),
+
+	/**
+	 * The '<em><b>AXIS2</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS2_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS2(0, "AXIS2", "group2"),
+
+	/**
+	 * The '<em><b>AXIS3</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS3_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS3(0, "AXIS3", "group3"),
+
+	/**
+	 * The '<em><b>AXIS4</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS4_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS4(0, "AXIS4", "group4"),
+
+	/**
+	 * The '<em><b>AXIS5</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS5_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS5(0, "AXIS5", "group5"),
+
+	/**
+	 * The '<em><b>AXIS6</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS6_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS6(0, "AXIS6", "group6"),
+
+	/**
+	 * The '<em><b>AXIS7</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS7_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS7(0, "AXIS7", "group7"),
+
+	/**
+	 * The '<em><b>AXIS8</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS8_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS8(0, "AXIS8", "group8"),
+
+	/**
+	 * The '<em><b>AXIS9</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AXIS9_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AXIS9(0, "AXIS9", "group9");
+
+	/**
+	 * The '<em><b>AXIS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS
+	 * @model literal="group1"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS2</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS2</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS2
+	 * @model literal="group2"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS2_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS3</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS3</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS3
+	 * @model literal="group3"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS3_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS4</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS4</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS4
+	 * @model literal="group4"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS4_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS5</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS5</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS5
+	 * @model literal="group5"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS5_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS6</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS6</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS6
+	 * @model literal="group6"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS6_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS7</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS7</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS7
+	 * @model literal="group7"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS7_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS8</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS8</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS8
+	 * @model literal="group8"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS8_VALUE = 0;
+
+	/**
+	 * The '<em><b>AXIS9</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AXIS9</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AXIS9
+	 * @model literal="group9"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AXIS9_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Value Scale Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ValueScaleEnum[] VALUES_ARRAY =
+		new ValueScaleEnum[] {
+			AXIS,
+			AXIS2,
+			AXIS3,
+			AXIS4,
+			AXIS5,
+			AXIS6,
+			AXIS7,
+			AXIS8,
+			AXIS9,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Value Scale Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ValueScaleEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Value Scale Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ValueScaleEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ValueScaleEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Value Scale Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ValueScaleEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ValueScaleEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Value Scale Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ValueScaleEnum get(int value) {
+		switch (value) {
+			case AXIS_VALUE: return AXIS;
+		}
+		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 ValueScaleEnum(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;
+	}
+	
+} //ValueScaleEnum
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/AdditionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/AdditionImpl.java
new file mode 100644
index 0000000..84d1871
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/AdditionImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.Addition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Addition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AdditionImpl extends CalculationImpl implements Addition {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdditionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.ADDITION;
+	}
+
+} //AdditionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/CalculationImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/CalculationImpl.java
new file mode 100644
index 0000000..1e3e248
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/CalculationImpl.java
@@ -0,0 +1,252 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.Calculation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Calculation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.CalculationImpl#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.CalculationImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CalculationImpl extends ExpressionImpl implements Calculation {
+	/**
+	 * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLeft()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression left;
+
+	/**
+	 * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRight()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression right;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CalculationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.CALCULATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getLeft() {
+		return left;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs) {
+		Expression oldLeft = left;
+		left = newLeft;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.CALCULATION__LEFT, oldLeft, newLeft);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLeft(Expression newLeft) {
+		if (newLeft != left) {
+			NotificationChain msgs = null;
+			if (left != null)
+				msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.CALCULATION__LEFT, null, msgs);
+			if (newLeft != null)
+				msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.CALCULATION__LEFT, null, msgs);
+			msgs = basicSetLeft(newLeft, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.CALCULATION__LEFT, newLeft, newLeft));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getRight() {
+		return right;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRight(Expression newRight, NotificationChain msgs) {
+		Expression oldRight = right;
+		right = newRight;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.CALCULATION__RIGHT, oldRight, newRight);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRight(Expression newRight) {
+		if (newRight != right) {
+			NotificationChain msgs = null;
+			if (right != null)
+				msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.CALCULATION__RIGHT, null, msgs);
+			if (newRight != null)
+				msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.CALCULATION__RIGHT, null, msgs);
+			msgs = basicSetRight(newRight, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.CALCULATION__RIGHT, newRight, newRight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.CALCULATION__LEFT:
+				return basicSetLeft(null, msgs);
+			case DatamartDSLPackage.CALCULATION__RIGHT:
+				return basicSetRight(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 DatamartDSLPackage.CALCULATION__LEFT:
+				return getLeft();
+			case DatamartDSLPackage.CALCULATION__RIGHT:
+				return getRight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.CALCULATION__LEFT:
+				setLeft((Expression)newValue);
+				return;
+			case DatamartDSLPackage.CALCULATION__RIGHT:
+				setRight((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.CALCULATION__LEFT:
+				setLeft((Expression)null);
+				return;
+			case DatamartDSLPackage.CALCULATION__RIGHT:
+				setRight((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.CALCULATION__LEFT:
+				return left != null;
+			case DatamartDSLPackage.CALCULATION__RIGHT:
+				return right != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CalculationImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ConditionalExpressionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ConditionalExpressionImpl.java
new file mode 100644
index 0000000..44d721a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ConditionalExpressionImpl.java
@@ -0,0 +1,174 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.ConditionalExpression;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.OperatorEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conditional Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ConditionalExpressionImpl#getOperator <em>Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConditionalExpressionImpl extends CalculationImpl implements ConditionalExpression {
+	/**
+	 * The default value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final OperatorEnum OPERATOR_EDEFAULT = OperatorEnum.EQUALS;
+
+	/**
+	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected OperatorEnum operator = OPERATOR_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConditionalExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.CONDITIONAL_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperatorEnum getOperator() {
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOperator(OperatorEnum newOperator) {
+		OperatorEnum oldOperator = operator;
+		operator = newOperator == null ? OPERATOR_EDEFAULT : newOperator;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.CONDITIONAL_EXPRESSION__OPERATOR, oldOperator, operator));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION__OPERATOR:
+				return getOperator();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION__OPERATOR:
+				setOperator((OperatorEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION__OPERATOR:
+				setOperator(OPERATOR_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION__OPERATOR:
+				return operator != OPERATOR_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(" (operator: ");
+		result.append(operator);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ConditionalExpressionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ConjunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ConjunctionImpl.java
new file mode 100644
index 0000000..646acaa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ConjunctionImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conjunction</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ConjunctionImpl extends CalculationImpl implements Conjunction {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConjunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.CONJUNCTION;
+	}
+
+} //ConjunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationExpressionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationExpressionImpl.java
new file mode 100644
index 0000000..da90698
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationExpressionImpl.java
@@ -0,0 +1,253 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartAggregationExpression;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Aggregation Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationExpressionImpl#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationExpressionImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartAggregationExpressionImpl extends ExpressionImpl implements DatamartAggregationExpression {
+	/**
+	 * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLeft()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression left;
+
+	/**
+	 * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRight()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartMeasure right;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartAggregationExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_AGGREGATION_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getLeft() {
+		return left;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs) {
+		Expression oldLeft = left;
+		left = newLeft;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT, oldLeft, newLeft);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLeft(Expression newLeft) {
+		if (newLeft != left) {
+			NotificationChain msgs = null;
+			if (left != null)
+				msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT, null, msgs);
+			if (newLeft != null)
+				msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT, null, msgs);
+			msgs = basicSetLeft(newLeft, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT, newLeft, newLeft));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartMeasure getRight() {
+		return right;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRight(DatamartMeasure newRight, NotificationChain msgs) {
+		DatamartMeasure oldRight = right;
+		right = newRight;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT, oldRight, newRight);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRight(DatamartMeasure newRight) {
+		if (newRight != right) {
+			NotificationChain msgs = null;
+			if (right != null)
+				msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT, null, msgs);
+			if (newRight != null)
+				msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT, null, msgs);
+			msgs = basicSetRight(newRight, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT, newRight, newRight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT:
+				return basicSetLeft(null, msgs);
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT:
+				return basicSetRight(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 DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT:
+				return getLeft();
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT:
+				return getRight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT:
+				setLeft((Expression)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT:
+				setRight((DatamartMeasure)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT:
+				setLeft((Expression)null);
+				return;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT:
+				setRight((DatamartMeasure)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__LEFT:
+				return left != null;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION__RIGHT:
+				return right != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartAggregationExpressionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationFunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationFunctionImpl.java
new file mode 100644
index 0000000..2eef17e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationFunctionImpl.java
@@ -0,0 +1,256 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.AggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Aggregation Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationFunctionImpl#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAggregationFunctionImpl#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartAggregationFunctionImpl extends MinimalEObjectImpl.Container implements DatamartAggregationFunction {
+	/**
+	 * The default value of the '{@link #getAggregation() <em>Aggregation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final AggregationEnum AGGREGATION_EDEFAULT = AggregationEnum.AVG;
+
+	/**
+	 * The cached value of the '{@link #getAggregation() <em>Aggregation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregation()
+	 * @generated
+	 * @ordered
+	 */
+	protected AggregationEnum aggregation = AGGREGATION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameter()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartFunctionIntParameter parameter;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartAggregationFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_AGGREGATION_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AggregationEnum getAggregation() {
+		return aggregation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregation(AggregationEnum newAggregation) {
+		AggregationEnum oldAggregation = aggregation;
+		aggregation = newAggregation == null ? AGGREGATION_EDEFAULT : newAggregation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__AGGREGATION, oldAggregation, aggregation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionIntParameter getParameter() {
+		return parameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParameter(DatamartFunctionIntParameter newParameter, NotificationChain msgs) {
+		DatamartFunctionIntParameter oldParameter = parameter;
+		parameter = newParameter;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER, oldParameter, newParameter);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParameter(DatamartFunctionIntParameter newParameter) {
+		if (newParameter != parameter) {
+			NotificationChain msgs = null;
+			if (parameter != null)
+				msgs = ((InternalEObject)parameter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER, null, msgs);
+			if (newParameter != null)
+				msgs = ((InternalEObject)newParameter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER, null, msgs);
+			msgs = basicSetParameter(newParameter, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER, newParameter, newParameter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER:
+				return basicSetParameter(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 DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__AGGREGATION:
+				return getAggregation();
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER:
+				return getParameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__AGGREGATION:
+				setAggregation((AggregationEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__AGGREGATION:
+				setAggregation(AGGREGATION_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__AGGREGATION:
+				return aggregation != AGGREGATION_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION__PARAMETER:
+				return parameter != 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(" (aggregation: ");
+		result.append(aggregation);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartAggregationFunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationImpl.java
new file mode 100644
index 0000000..a3e0064
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAggregationImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Aggregation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartAggregationImpl extends DatamartAggregationExpressionImpl implements DatamartAggregation {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartAggregationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_AGGREGATION;
+	}
+
+} //DatamartAggregationImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAxisImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAxisImpl.java
new file mode 100644
index 0000000..53fe8ee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartAxisImpl.java
@@ -0,0 +1,234 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Axis</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAxisImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartAxisImpl#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartAxisImpl extends MinimalEObjectImpl.Container implements DatamartAxis {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final AxisEnum NAME_EDEFAULT = AxisEnum.DEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected AxisEnum name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartElement> elements;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartAxisImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_AXIS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisEnum getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(AxisEnum newName) {
+		AxisEnum oldName = name;
+		name = newName == null ? NAME_EDEFAULT : newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_AXIS__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartElement> getElements() {
+		if (elements == null) {
+			elements = new EObjectContainmentEList<DatamartElement>(DatamartElement.class, this, DatamartDSLPackage.DATAMART_AXIS__ELEMENTS);
+		}
+		return elements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AXIS__ELEMENTS:
+				return ((InternalEList<?>)getElements()).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 DatamartDSLPackage.DATAMART_AXIS__NAME:
+				return getName();
+			case DatamartDSLPackage.DATAMART_AXIS__ELEMENTS:
+				return getElements();
+		}
+		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 DatamartDSLPackage.DATAMART_AXIS__NAME:
+				setName((AxisEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_AXIS__ELEMENTS:
+				getElements().clear();
+				getElements().addAll((Collection<? extends DatamartElement>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AXIS__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_AXIS__ELEMENTS:
+				getElements().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_AXIS__NAME:
+				return name != NAME_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_AXIS__ELEMENTS:
+				return elements != null && !elements.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(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartAxisImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartBaseImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartBaseImpl.java
new file mode 100644
index 0000000..329f24a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartBaseImpl.java
@@ -0,0 +1,173 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartBase;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Base</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartBaseImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartBaseImpl extends DatamartLazyResolverImpl implements DatamartBase {
+	/**
+	 * 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 DatamartBaseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_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, DatamartDSLPackage.DATAMART_BASE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_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 DatamartDSLPackage.DATAMART_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 DatamartDSLPackage.DATAMART_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 DatamartDSLPackage.DATAMART_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();
+	}
+
+} //DatamartBaseImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartColumnImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartColumnImpl.java
new file mode 100644
index 0000000..aea7f68
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartColumnImpl.java
@@ -0,0 +1,174 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Column</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartColumnImpl#getColumnRef <em>Column Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartColumnImpl extends ExpressionImpl implements DatamartColumn {
+	/**
+	 * The default value of the '{@link #getColumnRef() <em>Column Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumnRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TaskQueryColumnEnum COLUMN_REF_EDEFAULT = TaskQueryColumnEnum.P1;
+
+	/**
+	 * The cached value of the '{@link #getColumnRef() <em>Column Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumnRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected TaskQueryColumnEnum columnRef = COLUMN_REF_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartColumnImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_COLUMN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskQueryColumnEnum getColumnRef() {
+		return columnRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setColumnRef(TaskQueryColumnEnum newColumnRef) {
+		TaskQueryColumnEnum oldColumnRef = columnRef;
+		columnRef = newColumnRef == null ? COLUMN_REF_EDEFAULT : newColumnRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_COLUMN__COLUMN_REF, oldColumnRef, columnRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_COLUMN__COLUMN_REF:
+				return getColumnRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_COLUMN__COLUMN_REF:
+				setColumnRef((TaskQueryColumnEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_COLUMN__COLUMN_REF:
+				setColumnRef(COLUMN_REF_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_COLUMN__COLUMN_REF:
+				return columnRef != COLUMN_REF_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(" (columnRef: ");
+		result.append(columnRef);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartColumnImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartConditionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartConditionImpl.java
new file mode 100644
index 0000000..130196b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartConditionImpl.java
@@ -0,0 +1,187 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Condition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartConditionImpl#getCondition <em>Condition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartConditionImpl extends MinimalEObjectImpl.Container implements DatamartCondition {
+	/**
+	 * The cached value of the '{@link #getCondition() <em>Condition</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCondition()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression condition;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartConditionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_CONDITION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getCondition() {
+		return condition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCondition(Expression newCondition, NotificationChain msgs) {
+		Expression oldCondition = condition;
+		condition = newCondition;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_CONDITION__CONDITION, oldCondition, newCondition);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCondition(Expression newCondition) {
+		if (newCondition != condition) {
+			NotificationChain msgs = null;
+			if (condition != null)
+				msgs = ((InternalEObject)condition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_CONDITION__CONDITION, null, msgs);
+			if (newCondition != null)
+				msgs = ((InternalEObject)newCondition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_CONDITION__CONDITION, null, msgs);
+			msgs = basicSetCondition(newCondition, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_CONDITION__CONDITION, newCondition, newCondition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CONDITION__CONDITION:
+				return basicSetCondition(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 DatamartDSLPackage.DATAMART_CONDITION__CONDITION:
+				return getCondition();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CONDITION__CONDITION:
+				setCondition((Expression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CONDITION__CONDITION:
+				setCondition((Expression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CONDITION__CONDITION:
+				return condition != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartConditionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartCubeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartCubeImpl.java
new file mode 100644
index 0000000..25ae618
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartCubeImpl.java
@@ -0,0 +1,294 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.CubeType;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Cube</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl#isNonEmpty <em>Non Empty</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl#getCubeRef <em>Cube Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartCubeImpl#getAxisslicer <em>Axisslicer</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartCubeImpl extends DatamartLazyResolverImpl implements DatamartCube {
+	/**
+	 * The default value of the '{@link #isNonEmpty() <em>Non Empty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isNonEmpty()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean NON_EMPTY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isNonEmpty() <em>Non Empty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isNonEmpty()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean nonEmpty = NON_EMPTY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCubeRef() <em>Cube Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCubeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeType cubeRef;
+
+	/**
+	 * The cached value of the '{@link #getAxisslicer() <em>Axisslicer</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAxisslicer()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartCubeElement> axisslicer;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartCubeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_CUBE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isNonEmpty() {
+		return nonEmpty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNonEmpty(boolean newNonEmpty) {
+		boolean oldNonEmpty = nonEmpty;
+		nonEmpty = newNonEmpty;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_CUBE__NON_EMPTY, oldNonEmpty, nonEmpty));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeType getCubeRef() {
+		if (cubeRef != null && cubeRef.eIsProxy()) {
+			InternalEObject oldCubeRef = (InternalEObject)cubeRef;
+			cubeRef = (CubeType)eResolveProxy(oldCubeRef);
+			if (cubeRef != oldCubeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_CUBE__CUBE_REF, oldCubeRef, cubeRef));
+			}
+		}
+		return cubeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeType basicGetCubeRef() {
+		return cubeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCubeRef(CubeType newCubeRef) {
+		CubeType oldCubeRef = cubeRef;
+		cubeRef = newCubeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_CUBE__CUBE_REF, oldCubeRef, cubeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartCubeElement> getAxisslicer() {
+		if (axisslicer == null) {
+			axisslicer = new EObjectContainmentEList<DatamartCubeElement>(DatamartCubeElement.class, this, DatamartDSLPackage.DATAMART_CUBE__AXISSLICER);
+		}
+		return axisslicer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CUBE__AXISSLICER:
+				return ((InternalEList<?>)getAxisslicer()).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 DatamartDSLPackage.DATAMART_CUBE__NON_EMPTY:
+				return isNonEmpty();
+			case DatamartDSLPackage.DATAMART_CUBE__CUBE_REF:
+				if (resolve) return getCubeRef();
+				return basicGetCubeRef();
+			case DatamartDSLPackage.DATAMART_CUBE__AXISSLICER:
+				return getAxisslicer();
+		}
+		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 DatamartDSLPackage.DATAMART_CUBE__NON_EMPTY:
+				setNonEmpty((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_CUBE__CUBE_REF:
+				setCubeRef((CubeType)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_CUBE__AXISSLICER:
+				getAxisslicer().clear();
+				getAxisslicer().addAll((Collection<? extends DatamartCubeElement>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CUBE__NON_EMPTY:
+				setNonEmpty(NON_EMPTY_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_CUBE__CUBE_REF:
+				setCubeRef((CubeType)null);
+				return;
+			case DatamartDSLPackage.DATAMART_CUBE__AXISSLICER:
+				getAxisslicer().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_CUBE__NON_EMPTY:
+				return nonEmpty != NON_EMPTY_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_CUBE__CUBE_REF:
+				return cubeRef != null;
+			case DatamartDSLPackage.DATAMART_CUBE__AXISSLICER:
+				return axisslicer != null && !axisslicer.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(" (nonEmpty: ");
+		result.append(nonEmpty);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartCubeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDSLFactoryImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDSLFactoryImpl.java
new file mode 100644
index 0000000..02bab91
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDSLFactoryImpl.java
@@ -0,0 +1,1218 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DatamartDSLFactoryImpl extends EFactoryImpl implements DatamartDSLFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static DatamartDSLFactory init() {
+		try {
+			DatamartDSLFactory theDatamartDSLFactory = (DatamartDSLFactory)EPackage.Registry.INSTANCE.getEFactory(DatamartDSLPackage.eNS_URI);
+			if (theDatamartDSLFactory != null) {
+				return theDatamartDSLFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new DatamartDSLFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDSLFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case DatamartDSLPackage.DATAMART_MODEL: return createDatamartModel();
+			case DatamartDSLPackage.DATAMART_LAZY_RESOLVER: return createDatamartLazyResolver();
+			case DatamartDSLPackage.DATAMART_BASE: return createDatamartBase();
+			case DatamartDSLPackage.DATAMART_PACKAGE: return createDatamartPackage();
+			case DatamartDSLPackage.DATAMART_DEFINITION: return createDatamartDefinition();
+			case DatamartDSLPackage.DATAMART_ROLE: return createDatamartRole();
+			case DatamartDSLPackage.DATAMART_TASK: return createDatamartTask();
+			case DatamartDSLPackage.DATAMART_CUBE: return createDatamartCube();
+			case DatamartDSLPackage.DATAMART_ENTITY: return createDatamartEntity();
+			case DatamartDSLPackage.DATAMART_COLUMN: return createDatamartColumn();
+			case DatamartDSLPackage.DATAMART_TASK_FILTER: return createDatamartTaskFilter();
+			case DatamartDSLPackage.DATAMART_NAVIGATION: return createDatamartNavigation();
+			case DatamartDSLPackage.DATAMART_OWNER: return createDatamartOwner();
+			case DatamartDSLPackage.DATAMART_MEMBER: return createDatamartMember();
+			case DatamartDSLPackage.DATAMART_PROPERTY: return createDatamartProperty();
+			case DatamartDSLPackage.EXPRESSION: return createExpression();
+			case DatamartDSLPackage.DATAMART_CONDITION: return createDatamartCondition();
+			case DatamartDSLPackage.DATAMART_ORDER: return createDatamartOrder();
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE: return createDatamartDefineDerivedMeasure();
+			case DatamartDSLPackage.DATAMART_FUNCTION: return createDatamartFunction();
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION: return createDatamartParameterFunction();
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER: return createDatamartFunctionIntParameter();
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION: return createDatamartSetFunction();
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION: return createDatamartSetParameterFunction();
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION: return createDatamartSetAggregationFunction();
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION: return createDatamartAggregationExpression();
+			case DatamartDSLPackage.DATAMART_SET_TUPLE: return createDatamartSetTuple();
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION: return createDatamartSetAggregation();
+			case DatamartDSLPackage.DATAMART_AGGREGATION: return createDatamartAggregation();
+			case DatamartDSLPackage.DATAMART_MEMBER_TUPLE: return createDatamartMemberTuple();
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION: return createDatamartAggregationFunction();
+			case DatamartDSLPackage.DATAMART_SLICER: return createDatamartSlicer();
+			case DatamartDSLPackage.DATAMART_AXIS: return createDatamartAxis();
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE: return createDatamartDerivedMeasure();
+			case DatamartDSLPackage.DATAMART_MEASURE: return createDatamartMeasure();
+			case DatamartDSLPackage.DATAMART_HIERARCHY: return createDatamartHierarchy();
+			case DatamartDSLPackage.CALCULATION: return createCalculation();
+			case DatamartDSLPackage.DATAMART_REFERENCE: return createDatamartReference();
+			case DatamartDSLPackage.ADDITION: return createAddition();
+			case DatamartDSLPackage.DIVISION: return createDivision();
+			case DatamartDSLPackage.MULTIPLICATION: return createMultiplication();
+			case DatamartDSLPackage.SUBTRACTION: return createSubtraction();
+			case DatamartDSLPackage.CONJUNCTION: return createConjunction();
+			case DatamartDSLPackage.DISJUNCTION: return createDisjunction();
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION: return createConditionalExpression();
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART: return createEventBrokerDataMart();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA: return createPropertyFillerData();
+			case DatamartDSLPackage.PROPERTY_FILLER_TYPE: return createPropertyFillerType();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_TYPE: return createPropertyFillerDateType();
+			case DatamartDSLPackage.PROPERTY_FILLER_DOUBLE_TYPE: return createPropertyFillerDoubleType();
+			case DatamartDSLPackage.PROPERTY_FILLER_INTEGER_TYPE: return createPropertyFillerIntegerType();
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_TYPE: return createPropertyFillerTextType();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE: return createPropertyFillerDateFuture();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST: return createPropertyFillerDatePast();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE: return createPropertyFillerDateRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE: return createPropertyFillerSignedDoubleRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM: return createPropertyFillerSignedDoubleRandom();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE: return createPropertyFillerSignedIntegerRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM: return createPropertyFillerSignedIntegerRandom();
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM: return createPropertyFillerTextRandom();
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS: return createPropertyFillerTextParagraphs();
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES: return createPropertyFillerTextSentences();
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS: return createPropertyFillerTextWords();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE: return createPropertyFillerUnsignedDoubleRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM: return createPropertyFillerUnsignedDoubleRandom();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE: return createPropertyFillerUnsignedIntegerRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM: return createPropertyFillerUnsignedIntegerRandom();
+			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 DatamartDSLPackage.AXIS_ENUM:
+				return createAxisEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.FUNCTION_ENUM:
+				return createFunctionEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.PARAMETER_FUNCTION_ENUM:
+				return createParameterFunctionEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.SET_FUNCTION_ENUM:
+				return createSetFunctionEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.SET_PARAMETER_FUNCTION_ENUM:
+				return createSetParameterFunctionEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.SET_AGGREGATION_ENUM:
+				return createSetAggregationEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.AGGREGATION_ENUM:
+				return createAggregationEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.OPERATOR_ENUM:
+				return createOperatorEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.SQL_AGGREGATION_ENUM:
+				return createSqlAggregationEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.VALUE_SCALE_ENUM:
+				return createValueScaleEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.TASK_QUERY_TOPIC_ENUM:
+				return createTaskQueryTopicEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.TASK_QUERY_COLUMN_ENUM:
+				return createTaskQueryColumnEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.TASK_FILTER_ENUM:
+				return createTaskFilterEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.ORDER_ENUM:
+				return createOrderEnumFromString(eDataType, initialValue);
+			case DatamartDSLPackage.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 DatamartDSLPackage.AXIS_ENUM:
+				return convertAxisEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.FUNCTION_ENUM:
+				return convertFunctionEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.PARAMETER_FUNCTION_ENUM:
+				return convertParameterFunctionEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.SET_FUNCTION_ENUM:
+				return convertSetFunctionEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.SET_PARAMETER_FUNCTION_ENUM:
+				return convertSetParameterFunctionEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.SET_AGGREGATION_ENUM:
+				return convertSetAggregationEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.AGGREGATION_ENUM:
+				return convertAggregationEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.OPERATOR_ENUM:
+				return convertOperatorEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.SQL_AGGREGATION_ENUM:
+				return convertSqlAggregationEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.VALUE_SCALE_ENUM:
+				return convertValueScaleEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.TASK_QUERY_TOPIC_ENUM:
+				return convertTaskQueryTopicEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.TASK_QUERY_COLUMN_ENUM:
+				return convertTaskQueryColumnEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.TASK_FILTER_ENUM:
+				return convertTaskFilterEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.ORDER_ENUM:
+				return convertOrderEnumToString(eDataType, instanceValue);
+			case DatamartDSLPackage.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 DatamartModel createDatamartModel() {
+		DatamartModelImpl datamartModel = new DatamartModelImpl();
+		return datamartModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartLazyResolver createDatamartLazyResolver() {
+		DatamartLazyResolverImpl datamartLazyResolver = new DatamartLazyResolverImpl();
+		return datamartLazyResolver;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartBase createDatamartBase() {
+		DatamartBaseImpl datamartBase = new DatamartBaseImpl();
+		return datamartBase;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartPackage createDatamartPackage() {
+		DatamartPackageImpl datamartPackage = new DatamartPackageImpl();
+		return datamartPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefinition createDatamartDefinition() {
+		DatamartDefinitionImpl datamartDefinition = new DatamartDefinitionImpl();
+		return datamartDefinition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartRole createDatamartRole() {
+		DatamartRoleImpl datamartRole = new DatamartRoleImpl();
+		return datamartRole;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartTask createDatamartTask() {
+		DatamartTaskImpl datamartTask = new DatamartTaskImpl();
+		return datamartTask;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartCube createDatamartCube() {
+		DatamartCubeImpl datamartCube = new DatamartCubeImpl();
+		return datamartCube;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartEntity createDatamartEntity() {
+		DatamartEntityImpl datamartEntity = new DatamartEntityImpl();
+		return datamartEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartColumn createDatamartColumn() {
+		DatamartColumnImpl datamartColumn = new DatamartColumnImpl();
+		return datamartColumn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartTaskFilter createDatamartTaskFilter() {
+		DatamartTaskFilterImpl datamartTaskFilter = new DatamartTaskFilterImpl();
+		return datamartTaskFilter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartNavigation createDatamartNavigation() {
+		DatamartNavigationImpl datamartNavigation = new DatamartNavigationImpl();
+		return datamartNavigation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartOwner createDatamartOwner() {
+		DatamartOwnerImpl datamartOwner = new DatamartOwnerImpl();
+		return datamartOwner;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartMember createDatamartMember() {
+		DatamartMemberImpl datamartMember = new DatamartMemberImpl();
+		return datamartMember;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartProperty createDatamartProperty() {
+		DatamartPropertyImpl datamartProperty = new DatamartPropertyImpl();
+		return datamartProperty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression createExpression() {
+		ExpressionImpl expression = new ExpressionImpl();
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartCondition createDatamartCondition() {
+		DatamartConditionImpl datamartCondition = new DatamartConditionImpl();
+		return datamartCondition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartOrder createDatamartOrder() {
+		DatamartOrderImpl datamartOrder = new DatamartOrderImpl();
+		return datamartOrder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefineDerivedMeasure createDatamartDefineDerivedMeasure() {
+		DatamartDefineDerivedMeasureImpl datamartDefineDerivedMeasure = new DatamartDefineDerivedMeasureImpl();
+		return datamartDefineDerivedMeasure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunction createDatamartFunction() {
+		DatamartFunctionImpl datamartFunction = new DatamartFunctionImpl();
+		return datamartFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartParameterFunction createDatamartParameterFunction() {
+		DatamartParameterFunctionImpl datamartParameterFunction = new DatamartParameterFunctionImpl();
+		return datamartParameterFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionIntParameter createDatamartFunctionIntParameter() {
+		DatamartFunctionIntParameterImpl datamartFunctionIntParameter = new DatamartFunctionIntParameterImpl();
+		return datamartFunctionIntParameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetFunction createDatamartSetFunction() {
+		DatamartSetFunctionImpl datamartSetFunction = new DatamartSetFunctionImpl();
+		return datamartSetFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetParameterFunction createDatamartSetParameterFunction() {
+		DatamartSetParameterFunctionImpl datamartSetParameterFunction = new DatamartSetParameterFunctionImpl();
+		return datamartSetParameterFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetAggregationFunction createDatamartSetAggregationFunction() {
+		DatamartSetAggregationFunctionImpl datamartSetAggregationFunction = new DatamartSetAggregationFunctionImpl();
+		return datamartSetAggregationFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAggregationExpression createDatamartAggregationExpression() {
+		DatamartAggregationExpressionImpl datamartAggregationExpression = new DatamartAggregationExpressionImpl();
+		return datamartAggregationExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetTuple createDatamartSetTuple() {
+		DatamartSetTupleImpl datamartSetTuple = new DatamartSetTupleImpl();
+		return datamartSetTuple;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetAggregation createDatamartSetAggregation() {
+		DatamartSetAggregationImpl datamartSetAggregation = new DatamartSetAggregationImpl();
+		return datamartSetAggregation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAggregation createDatamartAggregation() {
+		DatamartAggregationImpl datamartAggregation = new DatamartAggregationImpl();
+		return datamartAggregation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartMemberTuple createDatamartMemberTuple() {
+		DatamartMemberTupleImpl datamartMemberTuple = new DatamartMemberTupleImpl();
+		return datamartMemberTuple;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAggregationFunction createDatamartAggregationFunction() {
+		DatamartAggregationFunctionImpl datamartAggregationFunction = new DatamartAggregationFunctionImpl();
+		return datamartAggregationFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSlicer createDatamartSlicer() {
+		DatamartSlicerImpl datamartSlicer = new DatamartSlicerImpl();
+		return datamartSlicer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAxis createDatamartAxis() {
+		DatamartAxisImpl datamartAxis = new DatamartAxisImpl();
+		return datamartAxis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDerivedMeasure createDatamartDerivedMeasure() {
+		DatamartDerivedMeasureImpl datamartDerivedMeasure = new DatamartDerivedMeasureImpl();
+		return datamartDerivedMeasure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartMeasure createDatamartMeasure() {
+		DatamartMeasureImpl datamartMeasure = new DatamartMeasureImpl();
+		return datamartMeasure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartHierarchy createDatamartHierarchy() {
+		DatamartHierarchyImpl datamartHierarchy = new DatamartHierarchyImpl();
+		return datamartHierarchy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Calculation createCalculation() {
+		CalculationImpl calculation = new CalculationImpl();
+		return calculation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartReference createDatamartReference() {
+		DatamartReferenceImpl datamartReference = new DatamartReferenceImpl();
+		return datamartReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Addition createAddition() {
+		AdditionImpl addition = new AdditionImpl();
+		return addition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Division createDivision() {
+		DivisionImpl division = new DivisionImpl();
+		return division;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Multiplication createMultiplication() {
+		MultiplicationImpl multiplication = new MultiplicationImpl();
+		return multiplication;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Subtraction createSubtraction() {
+		SubtractionImpl subtraction = new SubtractionImpl();
+		return subtraction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Conjunction createConjunction() {
+		ConjunctionImpl conjunction = new ConjunctionImpl();
+		return conjunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Disjunction createDisjunction() {
+		DisjunctionImpl disjunction = new DisjunctionImpl();
+		return disjunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConditionalExpression createConditionalExpression() {
+		ConditionalExpressionImpl conditionalExpression = new ConditionalExpressionImpl();
+		return conditionalExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EventBrokerDataMart createEventBrokerDataMart() {
+		EventBrokerDataMartImpl eventBrokerDataMart = new EventBrokerDataMartImpl();
+		return eventBrokerDataMart;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerData createPropertyFillerData() {
+		PropertyFillerDataImpl propertyFillerData = new PropertyFillerDataImpl();
+		return propertyFillerData;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerType createPropertyFillerType() {
+		PropertyFillerTypeImpl propertyFillerType = new PropertyFillerTypeImpl();
+		return propertyFillerType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerDateType createPropertyFillerDateType() {
+		PropertyFillerDateTypeImpl propertyFillerDateType = new PropertyFillerDateTypeImpl();
+		return propertyFillerDateType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerDoubleType createPropertyFillerDoubleType() {
+		PropertyFillerDoubleTypeImpl propertyFillerDoubleType = new PropertyFillerDoubleTypeImpl();
+		return propertyFillerDoubleType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerIntegerType createPropertyFillerIntegerType() {
+		PropertyFillerIntegerTypeImpl propertyFillerIntegerType = new PropertyFillerIntegerTypeImpl();
+		return propertyFillerIntegerType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerTextType createPropertyFillerTextType() {
+		PropertyFillerTextTypeImpl propertyFillerTextType = new PropertyFillerTextTypeImpl();
+		return propertyFillerTextType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerDateFuture createPropertyFillerDateFuture() {
+		PropertyFillerDateFutureImpl propertyFillerDateFuture = new PropertyFillerDateFutureImpl();
+		return propertyFillerDateFuture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerDatePast createPropertyFillerDatePast() {
+		PropertyFillerDatePastImpl propertyFillerDatePast = new PropertyFillerDatePastImpl();
+		return propertyFillerDatePast;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerDateRange createPropertyFillerDateRange() {
+		PropertyFillerDateRangeImpl propertyFillerDateRange = new PropertyFillerDateRangeImpl();
+		return propertyFillerDateRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerSignedDoubleRange createPropertyFillerSignedDoubleRange() {
+		PropertyFillerSignedDoubleRangeImpl propertyFillerSignedDoubleRange = new PropertyFillerSignedDoubleRangeImpl();
+		return propertyFillerSignedDoubleRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerSignedDoubleRandom createPropertyFillerSignedDoubleRandom() {
+		PropertyFillerSignedDoubleRandomImpl propertyFillerSignedDoubleRandom = new PropertyFillerSignedDoubleRandomImpl();
+		return propertyFillerSignedDoubleRandom;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerSignedIntegerRange createPropertyFillerSignedIntegerRange() {
+		PropertyFillerSignedIntegerRangeImpl propertyFillerSignedIntegerRange = new PropertyFillerSignedIntegerRangeImpl();
+		return propertyFillerSignedIntegerRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerSignedIntegerRandom createPropertyFillerSignedIntegerRandom() {
+		PropertyFillerSignedIntegerRandomImpl propertyFillerSignedIntegerRandom = new PropertyFillerSignedIntegerRandomImpl();
+		return propertyFillerSignedIntegerRandom;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerTextRandom createPropertyFillerTextRandom() {
+		PropertyFillerTextRandomImpl propertyFillerTextRandom = new PropertyFillerTextRandomImpl();
+		return propertyFillerTextRandom;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerTextParagraphs createPropertyFillerTextParagraphs() {
+		PropertyFillerTextParagraphsImpl propertyFillerTextParagraphs = new PropertyFillerTextParagraphsImpl();
+		return propertyFillerTextParagraphs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerTextSentences createPropertyFillerTextSentences() {
+		PropertyFillerTextSentencesImpl propertyFillerTextSentences = new PropertyFillerTextSentencesImpl();
+		return propertyFillerTextSentences;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerTextWords createPropertyFillerTextWords() {
+		PropertyFillerTextWordsImpl propertyFillerTextWords = new PropertyFillerTextWordsImpl();
+		return propertyFillerTextWords;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerUnsignedDoubleRange createPropertyFillerUnsignedDoubleRange() {
+		PropertyFillerUnsignedDoubleRangeImpl propertyFillerUnsignedDoubleRange = new PropertyFillerUnsignedDoubleRangeImpl();
+		return propertyFillerUnsignedDoubleRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerUnsignedDoubleRandom createPropertyFillerUnsignedDoubleRandom() {
+		PropertyFillerUnsignedDoubleRandomImpl propertyFillerUnsignedDoubleRandom = new PropertyFillerUnsignedDoubleRandomImpl();
+		return propertyFillerUnsignedDoubleRandom;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerUnsignedIntegerRange createPropertyFillerUnsignedIntegerRange() {
+		PropertyFillerUnsignedIntegerRangeImpl propertyFillerUnsignedIntegerRange = new PropertyFillerUnsignedIntegerRangeImpl();
+		return propertyFillerUnsignedIntegerRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerUnsignedIntegerRandom createPropertyFillerUnsignedIntegerRandom() {
+		PropertyFillerUnsignedIntegerRandomImpl propertyFillerUnsignedIntegerRandom = new PropertyFillerUnsignedIntegerRandomImpl();
+		return propertyFillerUnsignedIntegerRandom;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisEnum createAxisEnumFromString(EDataType eDataType, String initialValue) {
+		AxisEnum result = AxisEnum.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 convertAxisEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionEnum createFunctionEnumFromString(EDataType eDataType, String initialValue) {
+		FunctionEnum result = FunctionEnum.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 convertFunctionEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterFunctionEnum createParameterFunctionEnumFromString(EDataType eDataType, String initialValue) {
+		ParameterFunctionEnum result = ParameterFunctionEnum.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 convertParameterFunctionEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SetFunctionEnum createSetFunctionEnumFromString(EDataType eDataType, String initialValue) {
+		SetFunctionEnum result = SetFunctionEnum.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 convertSetFunctionEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SetParameterFunctionEnum createSetParameterFunctionEnumFromString(EDataType eDataType, String initialValue) {
+		SetParameterFunctionEnum result = SetParameterFunctionEnum.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 convertSetParameterFunctionEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SetAggregationEnum createSetAggregationEnumFromString(EDataType eDataType, String initialValue) {
+		SetAggregationEnum result = SetAggregationEnum.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 convertSetAggregationEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AggregationEnum createAggregationEnumFromString(EDataType eDataType, String initialValue) {
+		AggregationEnum result = AggregationEnum.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 convertAggregationEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OperatorEnum createOperatorEnumFromString(EDataType eDataType, String initialValue) {
+		OperatorEnum result = OperatorEnum.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 convertOperatorEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SqlAggregationEnum createSqlAggregationEnumFromString(EDataType eDataType, String initialValue) {
+		SqlAggregationEnum result = SqlAggregationEnum.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 convertSqlAggregationEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ValueScaleEnum createValueScaleEnumFromString(EDataType eDataType, String initialValue) {
+		ValueScaleEnum result = ValueScaleEnum.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 convertValueScaleEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskQueryTopicEnum createTaskQueryTopicEnumFromString(EDataType eDataType, String initialValue) {
+		TaskQueryTopicEnum result = TaskQueryTopicEnum.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 convertTaskQueryTopicEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskQueryColumnEnum createTaskQueryColumnEnumFromString(EDataType eDataType, String initialValue) {
+		TaskQueryColumnEnum result = TaskQueryColumnEnum.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 convertTaskQueryColumnEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskFilterEnum createTaskFilterEnumFromString(EDataType eDataType, String initialValue) {
+		TaskFilterEnum result = TaskFilterEnum.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 convertTaskFilterEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OrderEnum createOrderEnumFromString(EDataType eDataType, String initialValue) {
+		OrderEnum result = OrderEnum.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 convertOrderEnumToString(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 DatamartDSLPackage getDatamartDSLPackage() {
+		return (DatamartDSLPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static DatamartDSLPackage getPackage() {
+		return DatamartDSLPackage.eINSTANCE;
+	}
+
+} //DatamartDSLFactoryImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDSLPackageImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDSLPackageImpl.java
new file mode 100644
index 0000000..1834bd9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDSLPackageImpl.java
@@ -0,0 +1,3578 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.authorizationdsl.AuthorizationDSLPackage;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+
+import org.eclipse.osbp.xtext.datamartdsl.Addition;
+import org.eclipse.osbp.xtext.datamartdsl.AggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.Calculation;
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression;
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartBase;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLFactory;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter;
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction;
+import org.eclipse.osbp.xtext.datamartdsl.Division;
+import org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+import org.eclipse.osbp.xtext.datamartdsl.FunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication;
+import org.eclipse.osbp.xtext.datamartdsl.OperatorEnum;
+import org.eclipse.osbp.xtext.datamartdsl.OrderEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange;
+import org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction;
+import org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DatamartDSLPackageImpl extends EPackageImpl implements DatamartDSLPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartLazyResolverEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartBaseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartPackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartDefinitionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSourceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartRoleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartTaskEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartCubeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartEntityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartColumnEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartTaskFilterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartNavigationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartOwnerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartMemberEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartPropertyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass expressionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartConditionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartOrderEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartCubeElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartDefineDerivedMeasureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartFunctionInterfaceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartParameterFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartFunctionIntParameterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSetFunctionInterfaceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSetFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSetParameterFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartAggregationFunctionInterfaceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSetAggregationFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartAggregationExpressionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSetTupleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSetAggregationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartAggregationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartMemberTupleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartAggregationFunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartSlicerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartAxisEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartDerivedMeasureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartMeasureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartHierarchyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass calculationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass datamartReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass additionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass divisionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass multiplicationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass subtractionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass conjunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass disjunctionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass conditionalExpressionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass eventBrokerDataMartEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerDataEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerDateTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerDoubleTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerIntegerTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerTextTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerDateFutureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerDatePastEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerDateRangeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerSignedDoubleRangeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerSignedDoubleRandomEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerSignedIntegerRangeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerSignedIntegerRandomEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerTextRandomEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerTextParagraphsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerTextSentencesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerTextWordsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerUnsignedDoubleRangeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerUnsignedDoubleRandomEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerUnsignedIntegerRangeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass propertyFillerUnsignedIntegerRandomEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum axisEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum functionEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum parameterFunctionEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum setFunctionEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum setParameterFunctionEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum setAggregationEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum aggregationEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum operatorEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum sqlAggregationEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum valueScaleEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum taskQueryTopicEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum taskQueryColumnEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum taskFilterEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum orderEnumEEnum = 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.datamartdsl.DatamartDSLPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private DatamartDSLPackageImpl() {
+		super(eNS_URI, DatamartDSLFactory.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 DatamartDSLPackage#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 DatamartDSLPackage init() {
+		if (isInited) return (DatamartDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DatamartDSLPackage.eNS_URI);
+
+		// Obtain or create and register package
+		DatamartDSLPackageImpl theDatamartDSLPackage = (DatamartDSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof DatamartDSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new DatamartDSLPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		AuthorizationDSLPackage.eINSTANCE.eClass();
+		CubeDSLPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theDatamartDSLPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theDatamartDSLPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theDatamartDSLPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(DatamartDSLPackage.eNS_URI, theDatamartDSLPackage);
+		return theDatamartDSLPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartModel() {
+		return datamartModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartModel_Packages() {
+		return (EReference)datamartModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartLazyResolver() {
+		return datamartLazyResolverEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getDatamartLazyResolver__EResolveProxy__InternalEObject() {
+		return datamartLazyResolverEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartBase() {
+		return datamartBaseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartBase_Name() {
+		return (EAttribute)datamartBaseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartPackage() {
+		return datamartPackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartPackage_Definitions() {
+		return (EReference)datamartPackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartDefinition() {
+		return datamartDefinitionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartDefinition_Description() {
+		return (EAttribute)datamartDefinitionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartDefinition_DescriptionValue() {
+		return (EAttribute)datamartDefinitionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartDefinition_Source() {
+		return (EReference)datamartDefinitionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartDefinition_Roles() {
+		return (EReference)datamartDefinitionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSource() {
+		return datamartSourceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartRole() {
+		return datamartRoleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartRole_AssignedRole() {
+		return (EReference)datamartRoleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartTask() {
+		return datamartTaskEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartTask_TaskQuery() {
+		return (EAttribute)datamartTaskEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartTask_Columns() {
+		return (EReference)datamartTaskEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartTask_Conditions() {
+		return (EReference)datamartTaskEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartCube() {
+		return datamartCubeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartCube_NonEmpty() {
+		return (EAttribute)datamartCubeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartCube_CubeRef() {
+		return (EReference)datamartCubeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartCube_Axisslicer() {
+		return (EReference)datamartCubeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartEntity() {
+		return datamartEntityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartEntity_EntityRef() {
+		return (EReference)datamartEntityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartEntity_Navigations() {
+		return (EReference)datamartEntityEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartEntity_Properties() {
+		return (EReference)datamartEntityEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartEntity_Conditions() {
+		return (EReference)datamartEntityEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartEntity_Ordering() {
+		return (EReference)datamartEntityEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartEntity_FillerMinCountRows() {
+		return (EAttribute)datamartEntityEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartEntity_FillerMaxCountRows() {
+		return (EAttribute)datamartEntityEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartEntity_Tracking() {
+		return (EAttribute)datamartEntityEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartEntity_FillerDatas() {
+		return (EReference)datamartEntityEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartColumn() {
+		return datamartColumnEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartColumn_ColumnRef() {
+		return (EAttribute)datamartColumnEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartTaskFilter() {
+		return datamartTaskFilterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartTaskFilter_FilterRef() {
+		return (EAttribute)datamartTaskFilterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartNavigation() {
+		return datamartNavigationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartNavigation_JoinRef() {
+		return (EReference)datamartNavigationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartNavigation_DatamartEntity() {
+		return (EReference)datamartNavigationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartOwner() {
+		return datamartOwnerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartMember() {
+		return datamartMemberEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartProperty() {
+		return datamartPropertyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartProperty_Aggregated() {
+		return (EAttribute)datamartPropertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartProperty_Scaled() {
+		return (EAttribute)datamartPropertyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartProperty_Placed() {
+		return (EAttribute)datamartPropertyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartProperty_Axis() {
+		return (EAttribute)datamartPropertyEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartProperty_Aggregate() {
+		return (EAttribute)datamartPropertyEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartProperty_Scale() {
+		return (EAttribute)datamartPropertyEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartProperty_PropertyRef() {
+		return (EReference)datamartPropertyEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getExpression() {
+		return expressionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExpression_Filtered() {
+		return (EAttribute)expressionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExpression_Selected() {
+		return (EAttribute)expressionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExpression_Optional() {
+		return (EAttribute)expressionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExpression_NumberValue() {
+		return (EAttribute)expressionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExpression_StringValue() {
+		return (EAttribute)expressionEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getExpression_Value() {
+		return (EAttribute)expressionEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExpression_Hierarchy() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExpression_Aggregation() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExpression_Function() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExpression_Set() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getExpression_SetFunction() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartCondition() {
+		return datamartConditionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartCondition_Condition() {
+		return (EReference)datamartConditionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartOrder() {
+		return datamartOrderEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartOrder_OrderBy() {
+		return (EReference)datamartOrderEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartOrder_OrderHow() {
+		return (EAttribute)datamartOrderEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartCubeElement() {
+		return datamartCubeElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartDefineDerivedMeasure() {
+		return datamartDefineDerivedMeasureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartDefineDerivedMeasure_DerivedElement() {
+		return (EReference)datamartDefineDerivedMeasureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartFunctionInterface() {
+		return datamartFunctionInterfaceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartFunction() {
+		return datamartFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartFunction_Function() {
+		return (EAttribute)datamartFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartParameterFunction() {
+		return datamartParameterFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartParameterFunction_Function() {
+		return (EAttribute)datamartParameterFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartParameterFunction_Parameter() {
+		return (EReference)datamartParameterFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartFunctionIntParameter() {
+		return datamartFunctionIntParameterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartFunctionIntParameter_Value() {
+		return (EAttribute)datamartFunctionIntParameterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSetFunctionInterface() {
+		return datamartSetFunctionInterfaceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSetFunction() {
+		return datamartSetFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartSetFunction_SetFunction() {
+		return (EAttribute)datamartSetFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSetParameterFunction() {
+		return datamartSetParameterFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartSetParameterFunction_SetFunction() {
+		return (EAttribute)datamartSetParameterFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartSetParameterFunction_Parameter() {
+		return (EReference)datamartSetParameterFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartAggregationFunctionInterface() {
+		return datamartAggregationFunctionInterfaceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSetAggregationFunction() {
+		return datamartSetAggregationFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartSetAggregationFunction_Aggregation() {
+		return (EAttribute)datamartSetAggregationFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartSetAggregationFunction_Parameter() {
+		return (EReference)datamartSetAggregationFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartAggregationExpression() {
+		return datamartAggregationExpressionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartAggregationExpression_Left() {
+		return (EReference)datamartAggregationExpressionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartAggregationExpression_Right() {
+		return (EReference)datamartAggregationExpressionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSetTuple() {
+		return datamartSetTupleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartSetTuple_Left() {
+		return (EReference)datamartSetTupleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartSetTuple_Right() {
+		return (EReference)datamartSetTupleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSetAggregation() {
+		return datamartSetAggregationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartAggregation() {
+		return datamartAggregationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartMemberTuple() {
+		return datamartMemberTupleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartAggregationFunction() {
+		return datamartAggregationFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartAggregationFunction_Aggregation() {
+		return (EAttribute)datamartAggregationFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartAggregationFunction_Parameter() {
+		return (EReference)datamartAggregationFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartSlicer() {
+		return datamartSlicerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartSlicer_Element() {
+		return (EReference)datamartSlicerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartAxis() {
+		return datamartAxisEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartAxis_Name() {
+		return (EAttribute)datamartAxisEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartAxis_Elements() {
+		return (EReference)datamartAxisEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartElement() {
+		return datamartElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartDerivedMeasure() {
+		return datamartDerivedMeasureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartDerivedMeasure_Scaled() {
+		return (EAttribute)datamartDerivedMeasureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartDerivedMeasure_Scale() {
+		return (EAttribute)datamartDerivedMeasureEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartDerivedMeasure_DerivedRef() {
+		return (EReference)datamartDerivedMeasureEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartMeasure() {
+		return datamartMeasureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartMeasure_Scaled() {
+		return (EAttribute)datamartMeasureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartMeasure_Scale() {
+		return (EAttribute)datamartMeasureEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartMeasure_MeasureRef() {
+		return (EReference)datamartMeasureEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartHierarchy() {
+		return datamartHierarchyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_DefaultMember() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_AllMember() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_AllLevels() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_All() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_Except() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_Ordered() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDatamartHierarchy_Descending() {
+		return (EAttribute)datamartHierarchyEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartHierarchy_HierarchyRef() {
+		return (EReference)datamartHierarchyEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartHierarchy_LevelRef() {
+		return (EReference)datamartHierarchyEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartHierarchy_ExceptRef() {
+		return (EReference)datamartHierarchyEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartHierarchy_OrderRef() {
+		return (EReference)datamartHierarchyEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCalculation() {
+		return calculationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCalculation_Left() {
+		return (EReference)calculationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCalculation_Right() {
+		return (EReference)calculationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDatamartReference() {
+		return datamartReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDatamartReference_Ref() {
+		return (EReference)datamartReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAddition() {
+		return additionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDivision() {
+		return divisionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getMultiplication() {
+		return multiplicationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSubtraction() {
+		return subtractionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getConjunction() {
+		return conjunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDisjunction() {
+		return disjunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getConditionalExpression() {
+		return conditionalExpressionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getConditionalExpression_Operator() {
+		return (EAttribute)conditionalExpressionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEventBrokerDataMart() {
+		return eventBrokerDataMartEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEventBrokerDataMart_Filter() {
+		return (EAttribute)eventBrokerDataMartEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEventBrokerDataMart_DatamartDef() {
+		return (EReference)eventBrokerDataMartEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerData() {
+		return propertyFillerDataEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerData_PropertyRef() {
+		return (EReference)propertyFillerDataEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerData_FillerType() {
+		return (EReference)propertyFillerDataEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerType() {
+		return propertyFillerTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerDateType() {
+		return propertyFillerDateTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerDoubleType() {
+		return propertyFillerDoubleTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerIntegerType() {
+		return propertyFillerIntegerTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerTextType() {
+		return propertyFillerTextTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerDateFuture() {
+		return propertyFillerDateFutureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerDateFuture_DateFutureYears() {
+		return (EAttribute)propertyFillerDateFutureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerDatePast() {
+		return propertyFillerDatePastEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerDatePast_DatePastYears() {
+		return (EAttribute)propertyFillerDatePastEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerDateRange() {
+		return propertyFillerDateRangeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerDateRange_DateBeginYears() {
+		return (EAttribute)propertyFillerDateRangeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerDateRange_DateEndYears() {
+		return (EAttribute)propertyFillerDateRangeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerSignedDoubleRange() {
+		return propertyFillerSignedDoubleRangeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedDoubleRange_Decimals() {
+		return (EAttribute)propertyFillerSignedDoubleRangeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedDoubleRange_BeginRange() {
+		return (EAttribute)propertyFillerSignedDoubleRangeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedDoubleRange_EndRange() {
+		return (EAttribute)propertyFillerSignedDoubleRangeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerSignedDoubleRange_BeginRangeRef() {
+		return (EReference)propertyFillerSignedDoubleRangeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerSignedDoubleRange_EndRangeRef() {
+		return (EReference)propertyFillerSignedDoubleRangeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedDoubleRange_Rounded() {
+		return (EAttribute)propertyFillerSignedDoubleRangeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerSignedDoubleRandom() {
+		return propertyFillerSignedDoubleRandomEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedDoubleRandom_Items() {
+		return (EAttribute)propertyFillerSignedDoubleRandomEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerSignedIntegerRange() {
+		return propertyFillerSignedIntegerRangeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedIntegerRange_BeginRange() {
+		return (EAttribute)propertyFillerSignedIntegerRangeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedIntegerRange_EndRange() {
+		return (EAttribute)propertyFillerSignedIntegerRangeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerSignedIntegerRange_BeginRangeRef() {
+		return (EReference)propertyFillerSignedIntegerRangeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerSignedIntegerRange_EndRangeRef() {
+		return (EReference)propertyFillerSignedIntegerRangeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedIntegerRange_Rounded() {
+		return (EAttribute)propertyFillerSignedIntegerRangeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerSignedIntegerRandom() {
+		return propertyFillerSignedIntegerRandomEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerSignedIntegerRandom_Items() {
+		return (EAttribute)propertyFillerSignedIntegerRandomEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerTextRandom() {
+		return propertyFillerTextRandomEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerTextRandom_Items() {
+		return (EAttribute)propertyFillerTextRandomEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerTextParagraphs() {
+		return propertyFillerTextParagraphsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerTextParagraphs_Count() {
+		return (EAttribute)propertyFillerTextParagraphsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerTextSentences() {
+		return propertyFillerTextSentencesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerTextSentences_Count() {
+		return (EAttribute)propertyFillerTextSentencesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerTextWords() {
+		return propertyFillerTextWordsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerTextWords_Count() {
+		return (EAttribute)propertyFillerTextWordsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerUnsignedDoubleRange() {
+		return propertyFillerUnsignedDoubleRangeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedDoubleRange_Decimals() {
+		return (EAttribute)propertyFillerUnsignedDoubleRangeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedDoubleRange_BeginRange() {
+		return (EAttribute)propertyFillerUnsignedDoubleRangeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedDoubleRange_EndRange() {
+		return (EAttribute)propertyFillerUnsignedDoubleRangeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerUnsignedDoubleRange_BeginRangeRef() {
+		return (EReference)propertyFillerUnsignedDoubleRangeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerUnsignedDoubleRange_EndRangeRef() {
+		return (EReference)propertyFillerUnsignedDoubleRangeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedDoubleRange_Rounded() {
+		return (EAttribute)propertyFillerUnsignedDoubleRangeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerUnsignedDoubleRandom() {
+		return propertyFillerUnsignedDoubleRandomEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedDoubleRandom_Items() {
+		return (EAttribute)propertyFillerUnsignedDoubleRandomEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerUnsignedIntegerRange() {
+		return propertyFillerUnsignedIntegerRangeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedIntegerRange_BeginRange() {
+		return (EAttribute)propertyFillerUnsignedIntegerRangeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedIntegerRange_EndRange() {
+		return (EAttribute)propertyFillerUnsignedIntegerRangeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerUnsignedIntegerRange_BeginRangeRef() {
+		return (EReference)propertyFillerUnsignedIntegerRangeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPropertyFillerUnsignedIntegerRange_EndRangeRef() {
+		return (EReference)propertyFillerUnsignedIntegerRangeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedIntegerRange_Rounded() {
+		return (EAttribute)propertyFillerUnsignedIntegerRangeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPropertyFillerUnsignedIntegerRandom() {
+		return propertyFillerUnsignedIntegerRandomEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPropertyFillerUnsignedIntegerRandom_Items() {
+		return (EAttribute)propertyFillerUnsignedIntegerRandomEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getAxisEnum() {
+		return axisEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getFunctionEnum() {
+		return functionEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getParameterFunctionEnum() {
+		return parameterFunctionEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSetFunctionEnum() {
+		return setFunctionEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSetParameterFunctionEnum() {
+		return setParameterFunctionEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSetAggregationEnum() {
+		return setAggregationEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getAggregationEnum() {
+		return aggregationEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getOperatorEnum() {
+		return operatorEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getSqlAggregationEnum() {
+		return sqlAggregationEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getValueScaleEnum() {
+		return valueScaleEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getTaskQueryTopicEnum() {
+		return taskQueryTopicEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getTaskQueryColumnEnum() {
+		return taskQueryColumnEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getTaskFilterEnum() {
+		return taskFilterEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getOrderEnum() {
+		return orderEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDSLFactory getDatamartDSLFactory() {
+		return (DatamartDSLFactory)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
+		datamartModelEClass = createEClass(DATAMART_MODEL);
+		createEReference(datamartModelEClass, DATAMART_MODEL__PACKAGES);
+
+		datamartLazyResolverEClass = createEClass(DATAMART_LAZY_RESOLVER);
+		createEOperation(datamartLazyResolverEClass, DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
+
+		datamartBaseEClass = createEClass(DATAMART_BASE);
+		createEAttribute(datamartBaseEClass, DATAMART_BASE__NAME);
+
+		datamartPackageEClass = createEClass(DATAMART_PACKAGE);
+		createEReference(datamartPackageEClass, DATAMART_PACKAGE__DEFINITIONS);
+
+		datamartDefinitionEClass = createEClass(DATAMART_DEFINITION);
+		createEAttribute(datamartDefinitionEClass, DATAMART_DEFINITION__DESCRIPTION);
+		createEAttribute(datamartDefinitionEClass, DATAMART_DEFINITION__DESCRIPTION_VALUE);
+		createEReference(datamartDefinitionEClass, DATAMART_DEFINITION__SOURCE);
+		createEReference(datamartDefinitionEClass, DATAMART_DEFINITION__ROLES);
+
+		datamartSourceEClass = createEClass(DATAMART_SOURCE);
+
+		datamartRoleEClass = createEClass(DATAMART_ROLE);
+		createEReference(datamartRoleEClass, DATAMART_ROLE__ASSIGNED_ROLE);
+
+		datamartTaskEClass = createEClass(DATAMART_TASK);
+		createEAttribute(datamartTaskEClass, DATAMART_TASK__TASK_QUERY);
+		createEReference(datamartTaskEClass, DATAMART_TASK__COLUMNS);
+		createEReference(datamartTaskEClass, DATAMART_TASK__CONDITIONS);
+
+		datamartCubeEClass = createEClass(DATAMART_CUBE);
+		createEAttribute(datamartCubeEClass, DATAMART_CUBE__NON_EMPTY);
+		createEReference(datamartCubeEClass, DATAMART_CUBE__CUBE_REF);
+		createEReference(datamartCubeEClass, DATAMART_CUBE__AXISSLICER);
+
+		datamartEntityEClass = createEClass(DATAMART_ENTITY);
+		createEReference(datamartEntityEClass, DATAMART_ENTITY__ENTITY_REF);
+		createEReference(datamartEntityEClass, DATAMART_ENTITY__NAVIGATIONS);
+		createEReference(datamartEntityEClass, DATAMART_ENTITY__PROPERTIES);
+		createEReference(datamartEntityEClass, DATAMART_ENTITY__CONDITIONS);
+		createEReference(datamartEntityEClass, DATAMART_ENTITY__ORDERING);
+		createEAttribute(datamartEntityEClass, DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS);
+		createEAttribute(datamartEntityEClass, DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS);
+		createEAttribute(datamartEntityEClass, DATAMART_ENTITY__TRACKING);
+		createEReference(datamartEntityEClass, DATAMART_ENTITY__FILLER_DATAS);
+
+		datamartColumnEClass = createEClass(DATAMART_COLUMN);
+		createEAttribute(datamartColumnEClass, DATAMART_COLUMN__COLUMN_REF);
+
+		datamartTaskFilterEClass = createEClass(DATAMART_TASK_FILTER);
+		createEAttribute(datamartTaskFilterEClass, DATAMART_TASK_FILTER__FILTER_REF);
+
+		datamartNavigationEClass = createEClass(DATAMART_NAVIGATION);
+		createEReference(datamartNavigationEClass, DATAMART_NAVIGATION__JOIN_REF);
+		createEReference(datamartNavigationEClass, DATAMART_NAVIGATION__DATAMART_ENTITY);
+
+		datamartOwnerEClass = createEClass(DATAMART_OWNER);
+
+		datamartMemberEClass = createEClass(DATAMART_MEMBER);
+
+		datamartPropertyEClass = createEClass(DATAMART_PROPERTY);
+		createEAttribute(datamartPropertyEClass, DATAMART_PROPERTY__AGGREGATED);
+		createEAttribute(datamartPropertyEClass, DATAMART_PROPERTY__SCALED);
+		createEAttribute(datamartPropertyEClass, DATAMART_PROPERTY__PLACED);
+		createEAttribute(datamartPropertyEClass, DATAMART_PROPERTY__AXIS);
+		createEAttribute(datamartPropertyEClass, DATAMART_PROPERTY__AGGREGATE);
+		createEAttribute(datamartPropertyEClass, DATAMART_PROPERTY__SCALE);
+		createEReference(datamartPropertyEClass, DATAMART_PROPERTY__PROPERTY_REF);
+
+		expressionEClass = createEClass(EXPRESSION);
+		createEAttribute(expressionEClass, EXPRESSION__FILTERED);
+		createEAttribute(expressionEClass, EXPRESSION__SELECTED);
+		createEAttribute(expressionEClass, EXPRESSION__OPTIONAL);
+		createEAttribute(expressionEClass, EXPRESSION__NUMBER_VALUE);
+		createEAttribute(expressionEClass, EXPRESSION__STRING_VALUE);
+		createEAttribute(expressionEClass, EXPRESSION__VALUE);
+		createEReference(expressionEClass, EXPRESSION__HIERARCHY);
+		createEReference(expressionEClass, EXPRESSION__AGGREGATION);
+		createEReference(expressionEClass, EXPRESSION__FUNCTION);
+		createEReference(expressionEClass, EXPRESSION__SET);
+		createEReference(expressionEClass, EXPRESSION__SET_FUNCTION);
+
+		datamartConditionEClass = createEClass(DATAMART_CONDITION);
+		createEReference(datamartConditionEClass, DATAMART_CONDITION__CONDITION);
+
+		datamartOrderEClass = createEClass(DATAMART_ORDER);
+		createEReference(datamartOrderEClass, DATAMART_ORDER__ORDER_BY);
+		createEAttribute(datamartOrderEClass, DATAMART_ORDER__ORDER_HOW);
+
+		datamartCubeElementEClass = createEClass(DATAMART_CUBE_ELEMENT);
+
+		datamartDefineDerivedMeasureEClass = createEClass(DATAMART_DEFINE_DERIVED_MEASURE);
+		createEReference(datamartDefineDerivedMeasureEClass, DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT);
+
+		datamartFunctionInterfaceEClass = createEClass(DATAMART_FUNCTION_INTERFACE);
+
+		datamartFunctionEClass = createEClass(DATAMART_FUNCTION);
+		createEAttribute(datamartFunctionEClass, DATAMART_FUNCTION__FUNCTION);
+
+		datamartParameterFunctionEClass = createEClass(DATAMART_PARAMETER_FUNCTION);
+		createEAttribute(datamartParameterFunctionEClass, DATAMART_PARAMETER_FUNCTION__FUNCTION);
+		createEReference(datamartParameterFunctionEClass, DATAMART_PARAMETER_FUNCTION__PARAMETER);
+
+		datamartFunctionIntParameterEClass = createEClass(DATAMART_FUNCTION_INT_PARAMETER);
+		createEAttribute(datamartFunctionIntParameterEClass, DATAMART_FUNCTION_INT_PARAMETER__VALUE);
+
+		datamartSetFunctionInterfaceEClass = createEClass(DATAMART_SET_FUNCTION_INTERFACE);
+
+		datamartSetFunctionEClass = createEClass(DATAMART_SET_FUNCTION);
+		createEAttribute(datamartSetFunctionEClass, DATAMART_SET_FUNCTION__SET_FUNCTION);
+
+		datamartSetParameterFunctionEClass = createEClass(DATAMART_SET_PARAMETER_FUNCTION);
+		createEAttribute(datamartSetParameterFunctionEClass, DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION);
+		createEReference(datamartSetParameterFunctionEClass, DATAMART_SET_PARAMETER_FUNCTION__PARAMETER);
+
+		datamartAggregationFunctionInterfaceEClass = createEClass(DATAMART_AGGREGATION_FUNCTION_INTERFACE);
+
+		datamartSetAggregationFunctionEClass = createEClass(DATAMART_SET_AGGREGATION_FUNCTION);
+		createEAttribute(datamartSetAggregationFunctionEClass, DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION);
+		createEReference(datamartSetAggregationFunctionEClass, DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER);
+
+		datamartAggregationExpressionEClass = createEClass(DATAMART_AGGREGATION_EXPRESSION);
+		createEReference(datamartAggregationExpressionEClass, DATAMART_AGGREGATION_EXPRESSION__LEFT);
+		createEReference(datamartAggregationExpressionEClass, DATAMART_AGGREGATION_EXPRESSION__RIGHT);
+
+		datamartSetTupleEClass = createEClass(DATAMART_SET_TUPLE);
+		createEReference(datamartSetTupleEClass, DATAMART_SET_TUPLE__LEFT);
+		createEReference(datamartSetTupleEClass, DATAMART_SET_TUPLE__RIGHT);
+
+		datamartSetAggregationEClass = createEClass(DATAMART_SET_AGGREGATION);
+
+		datamartAggregationEClass = createEClass(DATAMART_AGGREGATION);
+
+		datamartMemberTupleEClass = createEClass(DATAMART_MEMBER_TUPLE);
+
+		datamartAggregationFunctionEClass = createEClass(DATAMART_AGGREGATION_FUNCTION);
+		createEAttribute(datamartAggregationFunctionEClass, DATAMART_AGGREGATION_FUNCTION__AGGREGATION);
+		createEReference(datamartAggregationFunctionEClass, DATAMART_AGGREGATION_FUNCTION__PARAMETER);
+
+		datamartSlicerEClass = createEClass(DATAMART_SLICER);
+		createEReference(datamartSlicerEClass, DATAMART_SLICER__ELEMENT);
+
+		datamartAxisEClass = createEClass(DATAMART_AXIS);
+		createEAttribute(datamartAxisEClass, DATAMART_AXIS__NAME);
+		createEReference(datamartAxisEClass, DATAMART_AXIS__ELEMENTS);
+
+		datamartElementEClass = createEClass(DATAMART_ELEMENT);
+
+		datamartDerivedMeasureEClass = createEClass(DATAMART_DERIVED_MEASURE);
+		createEAttribute(datamartDerivedMeasureEClass, DATAMART_DERIVED_MEASURE__SCALED);
+		createEAttribute(datamartDerivedMeasureEClass, DATAMART_DERIVED_MEASURE__SCALE);
+		createEReference(datamartDerivedMeasureEClass, DATAMART_DERIVED_MEASURE__DERIVED_REF);
+
+		datamartMeasureEClass = createEClass(DATAMART_MEASURE);
+		createEAttribute(datamartMeasureEClass, DATAMART_MEASURE__SCALED);
+		createEAttribute(datamartMeasureEClass, DATAMART_MEASURE__SCALE);
+		createEReference(datamartMeasureEClass, DATAMART_MEASURE__MEASURE_REF);
+
+		datamartHierarchyEClass = createEClass(DATAMART_HIERARCHY);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__DEFAULT_MEMBER);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__ALL_MEMBER);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__ALL_LEVELS);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__ALL);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__EXCEPT);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__ORDERED);
+		createEAttribute(datamartHierarchyEClass, DATAMART_HIERARCHY__DESCENDING);
+		createEReference(datamartHierarchyEClass, DATAMART_HIERARCHY__HIERARCHY_REF);
+		createEReference(datamartHierarchyEClass, DATAMART_HIERARCHY__LEVEL_REF);
+		createEReference(datamartHierarchyEClass, DATAMART_HIERARCHY__EXCEPT_REF);
+		createEReference(datamartHierarchyEClass, DATAMART_HIERARCHY__ORDER_REF);
+
+		calculationEClass = createEClass(CALCULATION);
+		createEReference(calculationEClass, CALCULATION__LEFT);
+		createEReference(calculationEClass, CALCULATION__RIGHT);
+
+		datamartReferenceEClass = createEClass(DATAMART_REFERENCE);
+		createEReference(datamartReferenceEClass, DATAMART_REFERENCE__REF);
+
+		additionEClass = createEClass(ADDITION);
+
+		divisionEClass = createEClass(DIVISION);
+
+		multiplicationEClass = createEClass(MULTIPLICATION);
+
+		subtractionEClass = createEClass(SUBTRACTION);
+
+		conjunctionEClass = createEClass(CONJUNCTION);
+
+		disjunctionEClass = createEClass(DISJUNCTION);
+
+		conditionalExpressionEClass = createEClass(CONDITIONAL_EXPRESSION);
+		createEAttribute(conditionalExpressionEClass, CONDITIONAL_EXPRESSION__OPERATOR);
+
+		eventBrokerDataMartEClass = createEClass(EVENT_BROKER_DATA_MART);
+		createEAttribute(eventBrokerDataMartEClass, EVENT_BROKER_DATA_MART__FILTER);
+		createEReference(eventBrokerDataMartEClass, EVENT_BROKER_DATA_MART__DATAMART_DEF);
+
+		propertyFillerDataEClass = createEClass(PROPERTY_FILLER_DATA);
+		createEReference(propertyFillerDataEClass, PROPERTY_FILLER_DATA__PROPERTY_REF);
+		createEReference(propertyFillerDataEClass, PROPERTY_FILLER_DATA__FILLER_TYPE);
+
+		propertyFillerTypeEClass = createEClass(PROPERTY_FILLER_TYPE);
+
+		propertyFillerDateTypeEClass = createEClass(PROPERTY_FILLER_DATE_TYPE);
+
+		propertyFillerDoubleTypeEClass = createEClass(PROPERTY_FILLER_DOUBLE_TYPE);
+
+		propertyFillerIntegerTypeEClass = createEClass(PROPERTY_FILLER_INTEGER_TYPE);
+
+		propertyFillerTextTypeEClass = createEClass(PROPERTY_FILLER_TEXT_TYPE);
+
+		propertyFillerDateFutureEClass = createEClass(PROPERTY_FILLER_DATE_FUTURE);
+		createEAttribute(propertyFillerDateFutureEClass, PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS);
+
+		propertyFillerDatePastEClass = createEClass(PROPERTY_FILLER_DATE_PAST);
+		createEAttribute(propertyFillerDatePastEClass, PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS);
+
+		propertyFillerDateRangeEClass = createEClass(PROPERTY_FILLER_DATE_RANGE);
+		createEAttribute(propertyFillerDateRangeEClass, PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS);
+		createEAttribute(propertyFillerDateRangeEClass, PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS);
+
+		propertyFillerSignedDoubleRangeEClass = createEClass(PROPERTY_FILLER_SIGNED_DOUBLE_RANGE);
+		createEAttribute(propertyFillerSignedDoubleRangeEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS);
+		createEAttribute(propertyFillerSignedDoubleRangeEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE);
+		createEAttribute(propertyFillerSignedDoubleRangeEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE);
+		createEReference(propertyFillerSignedDoubleRangeEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF);
+		createEReference(propertyFillerSignedDoubleRangeEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF);
+		createEAttribute(propertyFillerSignedDoubleRangeEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED);
+
+		propertyFillerSignedDoubleRandomEClass = createEClass(PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM);
+		createEAttribute(propertyFillerSignedDoubleRandomEClass, PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS);
+
+		propertyFillerSignedIntegerRangeEClass = createEClass(PROPERTY_FILLER_SIGNED_INTEGER_RANGE);
+		createEAttribute(propertyFillerSignedIntegerRangeEClass, PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE);
+		createEAttribute(propertyFillerSignedIntegerRangeEClass, PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE);
+		createEReference(propertyFillerSignedIntegerRangeEClass, PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF);
+		createEReference(propertyFillerSignedIntegerRangeEClass, PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF);
+		createEAttribute(propertyFillerSignedIntegerRangeEClass, PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED);
+
+		propertyFillerSignedIntegerRandomEClass = createEClass(PROPERTY_FILLER_SIGNED_INTEGER_RANDOM);
+		createEAttribute(propertyFillerSignedIntegerRandomEClass, PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS);
+
+		propertyFillerTextRandomEClass = createEClass(PROPERTY_FILLER_TEXT_RANDOM);
+		createEAttribute(propertyFillerTextRandomEClass, PROPERTY_FILLER_TEXT_RANDOM__ITEMS);
+
+		propertyFillerTextParagraphsEClass = createEClass(PROPERTY_FILLER_TEXT_PARAGRAPHS);
+		createEAttribute(propertyFillerTextParagraphsEClass, PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT);
+
+		propertyFillerTextSentencesEClass = createEClass(PROPERTY_FILLER_TEXT_SENTENCES);
+		createEAttribute(propertyFillerTextSentencesEClass, PROPERTY_FILLER_TEXT_SENTENCES__COUNT);
+
+		propertyFillerTextWordsEClass = createEClass(PROPERTY_FILLER_TEXT_WORDS);
+		createEAttribute(propertyFillerTextWordsEClass, PROPERTY_FILLER_TEXT_WORDS__COUNT);
+
+		propertyFillerUnsignedDoubleRangeEClass = createEClass(PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE);
+		createEAttribute(propertyFillerUnsignedDoubleRangeEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS);
+		createEAttribute(propertyFillerUnsignedDoubleRangeEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE);
+		createEAttribute(propertyFillerUnsignedDoubleRangeEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE);
+		createEReference(propertyFillerUnsignedDoubleRangeEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF);
+		createEReference(propertyFillerUnsignedDoubleRangeEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF);
+		createEAttribute(propertyFillerUnsignedDoubleRangeEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED);
+
+		propertyFillerUnsignedDoubleRandomEClass = createEClass(PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM);
+		createEAttribute(propertyFillerUnsignedDoubleRandomEClass, PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS);
+
+		propertyFillerUnsignedIntegerRangeEClass = createEClass(PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE);
+		createEAttribute(propertyFillerUnsignedIntegerRangeEClass, PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE);
+		createEAttribute(propertyFillerUnsignedIntegerRangeEClass, PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE);
+		createEReference(propertyFillerUnsignedIntegerRangeEClass, PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF);
+		createEReference(propertyFillerUnsignedIntegerRangeEClass, PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF);
+		createEAttribute(propertyFillerUnsignedIntegerRangeEClass, PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED);
+
+		propertyFillerUnsignedIntegerRandomEClass = createEClass(PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM);
+		createEAttribute(propertyFillerUnsignedIntegerRandomEClass, PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS);
+
+		// Create enums
+		axisEnumEEnum = createEEnum(AXIS_ENUM);
+		functionEnumEEnum = createEEnum(FUNCTION_ENUM);
+		parameterFunctionEnumEEnum = createEEnum(PARAMETER_FUNCTION_ENUM);
+		setFunctionEnumEEnum = createEEnum(SET_FUNCTION_ENUM);
+		setParameterFunctionEnumEEnum = createEEnum(SET_PARAMETER_FUNCTION_ENUM);
+		setAggregationEnumEEnum = createEEnum(SET_AGGREGATION_ENUM);
+		aggregationEnumEEnum = createEEnum(AGGREGATION_ENUM);
+		operatorEnumEEnum = createEEnum(OPERATOR_ENUM);
+		sqlAggregationEnumEEnum = createEEnum(SQL_AGGREGATION_ENUM);
+		valueScaleEnumEEnum = createEEnum(VALUE_SCALE_ENUM);
+		taskQueryTopicEnumEEnum = createEEnum(TASK_QUERY_TOPIC_ENUM);
+		taskQueryColumnEnumEEnum = createEEnum(TASK_QUERY_COLUMN_ENUM);
+		taskFilterEnumEEnum = createEEnum(TASK_FILTER_ENUM);
+		orderEnumEEnum = createEEnum(ORDER_ENUM);
+
+		// 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);
+		AuthorizationDSLPackage theAuthorizationDSLPackage = (AuthorizationDSLPackage)EPackage.Registry.INSTANCE.getEPackage(AuthorizationDSLPackage.eNS_URI);
+		CubeDSLPackage theCubeDSLPackage = (CubeDSLPackage)EPackage.Registry.INSTANCE.getEPackage(CubeDSLPackage.eNS_URI);
+		OSBPEntityPackage theOSBPEntityPackage = (OSBPEntityPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPEntityPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		datamartBaseEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartPackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
+		datamartDefinitionEClass.getESuperTypes().add(this.getDatamartBase());
+		datamartSourceEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartRoleEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartTaskEClass.getESuperTypes().add(this.getDatamartSource());
+		datamartCubeEClass.getESuperTypes().add(this.getDatamartSource());
+		datamartEntityEClass.getESuperTypes().add(this.getDatamartSource());
+		datamartColumnEClass.getESuperTypes().add(this.getExpression());
+		datamartColumnEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartTaskFilterEClass.getESuperTypes().add(this.getExpression());
+		datamartTaskFilterEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartNavigationEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartOwnerEClass.getESuperTypes().add(this.getDatamartNavigation());
+		datamartMemberEClass.getESuperTypes().add(this.getDatamartNavigation());
+		datamartPropertyEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartPropertyEClass.getESuperTypes().add(this.getExpression());
+		expressionEClass.getESuperTypes().add(this.getDatamartElement());
+		datamartDefineDerivedMeasureEClass.getESuperTypes().add(this.getDatamartCubeElement());
+		datamartDefineDerivedMeasureEClass.getESuperTypes().add(this.getDatamartBase());
+		datamartFunctionEClass.getESuperTypes().add(this.getDatamartFunctionInterface());
+		datamartParameterFunctionEClass.getESuperTypes().add(this.getDatamartFunctionInterface());
+		datamartSetFunctionEClass.getESuperTypes().add(this.getDatamartSetFunctionInterface());
+		datamartSetParameterFunctionEClass.getESuperTypes().add(this.getDatamartSetFunctionInterface());
+		datamartSetAggregationFunctionEClass.getESuperTypes().add(this.getDatamartAggregationFunctionInterface());
+		datamartAggregationExpressionEClass.getESuperTypes().add(this.getExpression());
+		datamartSetTupleEClass.getESuperTypes().add(this.getExpression());
+		datamartSetAggregationEClass.getESuperTypes().add(this.getDatamartAggregationExpression());
+		datamartAggregationEClass.getESuperTypes().add(this.getDatamartAggregationExpression());
+		datamartMemberTupleEClass.getESuperTypes().add(this.getDatamartAggregationExpression());
+		datamartAggregationFunctionEClass.getESuperTypes().add(this.getDatamartAggregationFunctionInterface());
+		datamartSlicerEClass.getESuperTypes().add(this.getDatamartCubeElement());
+		datamartAxisEClass.getESuperTypes().add(this.getDatamartCubeElement());
+		datamartElementEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartDerivedMeasureEClass.getESuperTypes().add(this.getExpression());
+		datamartDerivedMeasureEClass.getESuperTypes().add(this.getDatamartElement());
+		datamartMeasureEClass.getESuperTypes().add(this.getExpression());
+		datamartMeasureEClass.getESuperTypes().add(this.getDatamartElement());
+		datamartHierarchyEClass.getESuperTypes().add(this.getExpression());
+		datamartHierarchyEClass.getESuperTypes().add(this.getDatamartElement());
+		calculationEClass.getESuperTypes().add(this.getExpression());
+		calculationEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		datamartReferenceEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		additionEClass.getESuperTypes().add(this.getCalculation());
+		divisionEClass.getESuperTypes().add(this.getCalculation());
+		multiplicationEClass.getESuperTypes().add(this.getCalculation());
+		subtractionEClass.getESuperTypes().add(this.getCalculation());
+		conjunctionEClass.getESuperTypes().add(this.getCalculation());
+		disjunctionEClass.getESuperTypes().add(this.getCalculation());
+		conditionalExpressionEClass.getESuperTypes().add(this.getCalculation());
+		eventBrokerDataMartEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		propertyFillerDataEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		propertyFillerTypeEClass.getESuperTypes().add(this.getDatamartLazyResolver());
+		propertyFillerDateTypeEClass.getESuperTypes().add(this.getPropertyFillerType());
+		propertyFillerDoubleTypeEClass.getESuperTypes().add(this.getPropertyFillerType());
+		propertyFillerIntegerTypeEClass.getESuperTypes().add(this.getPropertyFillerType());
+		propertyFillerTextTypeEClass.getESuperTypes().add(this.getPropertyFillerType());
+		propertyFillerDateFutureEClass.getESuperTypes().add(this.getPropertyFillerDateType());
+		propertyFillerDatePastEClass.getESuperTypes().add(this.getPropertyFillerDateType());
+		propertyFillerDateRangeEClass.getESuperTypes().add(this.getPropertyFillerDateType());
+		propertyFillerSignedDoubleRangeEClass.getESuperTypes().add(this.getPropertyFillerDoubleType());
+		propertyFillerSignedDoubleRandomEClass.getESuperTypes().add(this.getPropertyFillerDoubleType());
+		propertyFillerSignedIntegerRangeEClass.getESuperTypes().add(this.getPropertyFillerIntegerType());
+		propertyFillerSignedIntegerRandomEClass.getESuperTypes().add(this.getPropertyFillerIntegerType());
+		propertyFillerTextRandomEClass.getESuperTypes().add(this.getPropertyFillerTextType());
+		propertyFillerTextParagraphsEClass.getESuperTypes().add(this.getPropertyFillerTextType());
+		propertyFillerTextSentencesEClass.getESuperTypes().add(this.getPropertyFillerTextType());
+		propertyFillerTextWordsEClass.getESuperTypes().add(this.getPropertyFillerTextType());
+		propertyFillerUnsignedDoubleRangeEClass.getESuperTypes().add(this.getPropertyFillerDoubleType());
+		propertyFillerUnsignedDoubleRandomEClass.getESuperTypes().add(this.getPropertyFillerDoubleType());
+		propertyFillerUnsignedIntegerRangeEClass.getESuperTypes().add(this.getPropertyFillerIntegerType());
+		propertyFillerUnsignedIntegerRandomEClass.getESuperTypes().add(this.getPropertyFillerIntegerType());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(datamartModelEClass, DatamartModel.class, "DatamartModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartModel_Packages(), this.getDatamartPackage(), null, "packages", null, 0, -1, DatamartModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartLazyResolverEClass, DatamartLazyResolver.class, "DatamartLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = initEOperation(getDatamartLazyResolver__EResolveProxy__InternalEObject(), theEcorePackage.getEObject(), "eResolveProxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(datamartBaseEClass, DatamartBase.class, "DatamartBase", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartBase_Name(), theEcorePackage.getEString(), "name", null, 0, 1, DatamartBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartPackageEClass, DatamartPackage.class, "DatamartPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartPackage_Definitions(), this.getDatamartDefinition(), null, "definitions", null, 0, -1, DatamartPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartDefinitionEClass, DatamartDefinition.class, "DatamartDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartDefinition_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, DatamartDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartDefinition_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, DatamartDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartDefinition_Source(), this.getDatamartSource(), null, "source", null, 0, 1, DatamartDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartDefinition_Roles(), this.getDatamartRole(), null, "roles", null, 0, -1, DatamartDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartSourceEClass, DatamartSource.class, "DatamartSource", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartRoleEClass, DatamartRole.class, "DatamartRole", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartRole_AssignedRole(), theAuthorizationDSLPackage.getRole(), null, "assignedRole", null, 0, 1, DatamartRole.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartTaskEClass, DatamartTask.class, "DatamartTask", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartTask_TaskQuery(), this.getTaskQueryTopicEnum(), "taskQuery", null, 0, 1, DatamartTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartTask_Columns(), this.getDatamartColumn(), null, "columns", null, 0, -1, DatamartTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartTask_Conditions(), this.getDatamartCondition(), null, "conditions", null, 0, -1, DatamartTask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartCubeEClass, DatamartCube.class, "DatamartCube", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartCube_NonEmpty(), theEcorePackage.getEBoolean(), "nonEmpty", null, 0, 1, DatamartCube.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartCube_CubeRef(), theCubeDSLPackage.getCubeType(), null, "cubeRef", null, 0, 1, DatamartCube.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartCube_Axisslicer(), this.getDatamartCubeElement(), null, "axisslicer", null, 0, -1, DatamartCube.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartEntityEClass, DatamartEntity.class, "DatamartEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartEntity_EntityRef(), theOSBPEntityPackage.getLEntity(), null, "entityRef", null, 0, 1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartEntity_Navigations(), this.getDatamartNavigation(), null, "navigations", null, 0, -1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartEntity_Properties(), this.getDatamartProperty(), null, "properties", null, 0, -1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartEntity_Conditions(), this.getDatamartCondition(), null, "conditions", null, 0, -1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartEntity_Ordering(), this.getDatamartOrder(), null, "ordering", null, 0, -1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartEntity_FillerMinCountRows(), theEcorePackage.getEInt(), "fillerMinCountRows", null, 0, 1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartEntity_FillerMaxCountRows(), theEcorePackage.getEInt(), "fillerMaxCountRows", null, 0, 1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartEntity_Tracking(), theEcorePackage.getEBoolean(), "tracking", null, 0, 1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartEntity_FillerDatas(), this.getPropertyFillerData(), null, "fillerDatas", null, 0, -1, DatamartEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartColumnEClass, DatamartColumn.class, "DatamartColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartColumn_ColumnRef(), this.getTaskQueryColumnEnum(), "columnRef", null, 0, 1, DatamartColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartTaskFilterEClass, DatamartTaskFilter.class, "DatamartTaskFilter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartTaskFilter_FilterRef(), this.getTaskFilterEnum(), "filterRef", null, 0, 1, DatamartTaskFilter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartNavigationEClass, DatamartNavigation.class, "DatamartNavigation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartNavigation_JoinRef(), this.getDatamartReference(), null, "joinRef", null, 0, 1, DatamartNavigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartNavigation_DatamartEntity(), this.getDatamartEntity(), null, "datamartEntity", null, 0, 1, DatamartNavigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartOwnerEClass, DatamartOwner.class, "DatamartOwner", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartMemberEClass, DatamartMember.class, "DatamartMember", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartPropertyEClass, DatamartProperty.class, "DatamartProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartProperty_Aggregated(), theEcorePackage.getEBoolean(), "aggregated", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartProperty_Scaled(), theEcorePackage.getEBoolean(), "scaled", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartProperty_Placed(), theEcorePackage.getEBoolean(), "placed", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartProperty_Axis(), this.getAxisEnum(), "axis", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartProperty_Aggregate(), this.getSqlAggregationEnum(), "aggregate", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartProperty_Scale(), this.getValueScaleEnum(), "scale", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartProperty_PropertyRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "propertyRef", null, 0, 1, DatamartProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getExpression_Filtered(), theEcorePackage.getEBoolean(), "filtered", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExpression_Selected(), theEcorePackage.getEBoolean(), "selected", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExpression_Optional(), theEcorePackage.getEBoolean(), "optional", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExpression_NumberValue(), theEcorePackage.getEString(), "numberValue", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExpression_StringValue(), theEcorePackage.getEString(), "stringValue", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getExpression_Value(), theEcorePackage.getEString(), "value", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExpression_Hierarchy(), this.getDatamartHierarchy(), null, "hierarchy", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExpression_Aggregation(), this.getDatamartAggregationFunctionInterface(), null, "aggregation", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExpression_Function(), this.getDatamartFunctionInterface(), null, "function", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExpression_Set(), this.getExpression(), null, "set", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExpression_SetFunction(), this.getDatamartSetFunctionInterface(), null, "setFunction", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartConditionEClass, DatamartCondition.class, "DatamartCondition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartCondition_Condition(), this.getExpression(), null, "condition", null, 0, 1, DatamartCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartOrderEClass, DatamartOrder.class, "DatamartOrder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartOrder_OrderBy(), theOSBPEntityPackage.getLEntityAttribute(), null, "orderBy", null, 0, 1, DatamartOrder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartOrder_OrderHow(), this.getOrderEnum(), "orderHow", null, 0, 1, DatamartOrder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartCubeElementEClass, DatamartCubeElement.class, "DatamartCubeElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartDefineDerivedMeasureEClass, DatamartDefineDerivedMeasure.class, "DatamartDefineDerivedMeasure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartDefineDerivedMeasure_DerivedElement(), this.getExpression(), null, "derivedElement", null, 0, -1, DatamartDefineDerivedMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartFunctionInterfaceEClass, DatamartFunctionInterface.class, "DatamartFunctionInterface", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartFunctionEClass, DatamartFunction.class, "DatamartFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartFunction_Function(), this.getFunctionEnum(), "function", null, 0, 1, DatamartFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartParameterFunctionEClass, DatamartParameterFunction.class, "DatamartParameterFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartParameterFunction_Function(), this.getParameterFunctionEnum(), "function", null, 0, 1, DatamartParameterFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartParameterFunction_Parameter(), this.getDatamartFunctionIntParameter(), null, "parameter", null, 0, 1, DatamartParameterFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartFunctionIntParameterEClass, DatamartFunctionIntParameter.class, "DatamartFunctionIntParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartFunctionIntParameter_Value(), theEcorePackage.getEInt(), "value", null, 0, 1, DatamartFunctionIntParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartSetFunctionInterfaceEClass, DatamartSetFunctionInterface.class, "DatamartSetFunctionInterface", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartSetFunctionEClass, DatamartSetFunction.class, "DatamartSetFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartSetFunction_SetFunction(), this.getSetFunctionEnum(), "setFunction", null, 0, 1, DatamartSetFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartSetParameterFunctionEClass, DatamartSetParameterFunction.class, "DatamartSetParameterFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartSetParameterFunction_SetFunction(), this.getSetParameterFunctionEnum(), "setFunction", null, 0, 1, DatamartSetParameterFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartSetParameterFunction_Parameter(), this.getDatamartFunctionIntParameter(), null, "parameter", null, 0, 1, DatamartSetParameterFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartAggregationFunctionInterfaceEClass, DatamartAggregationFunctionInterface.class, "DatamartAggregationFunctionInterface", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartSetAggregationFunctionEClass, DatamartSetAggregationFunction.class, "DatamartSetAggregationFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartSetAggregationFunction_Aggregation(), this.getSetAggregationEnum(), "aggregation", null, 0, 1, DatamartSetAggregationFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartSetAggregationFunction_Parameter(), this.getDatamartFunctionIntParameter(), null, "parameter", null, 0, 1, DatamartSetAggregationFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartAggregationExpressionEClass, DatamartAggregationExpression.class, "DatamartAggregationExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartAggregationExpression_Left(), this.getExpression(), null, "left", null, 0, 1, DatamartAggregationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartAggregationExpression_Right(), this.getDatamartMeasure(), null, "right", null, 0, 1, DatamartAggregationExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartSetTupleEClass, DatamartSetTuple.class, "DatamartSetTuple", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartSetTuple_Left(), this.getExpression(), null, "left", null, 0, 1, DatamartSetTuple.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartSetTuple_Right(), this.getDatamartHierarchy(), null, "right", null, 0, 1, DatamartSetTuple.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartSetAggregationEClass, DatamartSetAggregation.class, "DatamartSetAggregation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartAggregationEClass, DatamartAggregation.class, "DatamartAggregation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartMemberTupleEClass, DatamartMemberTuple.class, "DatamartMemberTuple", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartAggregationFunctionEClass, DatamartAggregationFunction.class, "DatamartAggregationFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartAggregationFunction_Aggregation(), this.getAggregationEnum(), "aggregation", null, 0, 1, DatamartAggregationFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartAggregationFunction_Parameter(), this.getDatamartFunctionIntParameter(), null, "parameter", null, 0, 1, DatamartAggregationFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartSlicerEClass, DatamartSlicer.class, "DatamartSlicer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartSlicer_Element(), this.getDatamartElement(), null, "element", null, 0, 1, DatamartSlicer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartAxisEClass, DatamartAxis.class, "DatamartAxis", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartAxis_Name(), this.getAxisEnum(), "name", null, 0, 1, DatamartAxis.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartAxis_Elements(), this.getDatamartElement(), null, "elements", null, 0, -1, DatamartAxis.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartElementEClass, DatamartElement.class, "DatamartElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(datamartDerivedMeasureEClass, DatamartDerivedMeasure.class, "DatamartDerivedMeasure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartDerivedMeasure_Scaled(), theEcorePackage.getEBoolean(), "scaled", null, 0, 1, DatamartDerivedMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartDerivedMeasure_Scale(), this.getValueScaleEnum(), "scale", null, 0, 1, DatamartDerivedMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartDerivedMeasure_DerivedRef(), this.getDatamartDefineDerivedMeasure(), null, "derivedRef", null, 0, 1, DatamartDerivedMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartMeasureEClass, DatamartMeasure.class, "DatamartMeasure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartMeasure_Scaled(), theEcorePackage.getEBoolean(), "scaled", null, 0, 1, DatamartMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartMeasure_Scale(), this.getValueScaleEnum(), "scale", null, 0, 1, DatamartMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartMeasure_MeasureRef(), theCubeDSLPackage.getCubeMeasure(), null, "measureRef", null, 0, 1, DatamartMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartHierarchyEClass, DatamartHierarchy.class, "DatamartHierarchy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDatamartHierarchy_DefaultMember(), theEcorePackage.getEBoolean(), "defaultMember", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartHierarchy_AllMember(), theEcorePackage.getEBoolean(), "allMember", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartHierarchy_AllLevels(), theEcorePackage.getEBoolean(), "allLevels", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartHierarchy_All(), theEcorePackage.getEBoolean(), "all", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartHierarchy_Except(), theEcorePackage.getEBoolean(), "except", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartHierarchy_Ordered(), theEcorePackage.getEBoolean(), "ordered", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDatamartHierarchy_Descending(), theEcorePackage.getEBoolean(), "descending", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartHierarchy_HierarchyRef(), theCubeDSLPackage.getCubeHierarchy(), null, "hierarchyRef", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartHierarchy_LevelRef(), theCubeDSLPackage.getCubeLevel(), null, "levelRef", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartHierarchy_ExceptRef(), theCubeDSLPackage.getCubeLevel(), null, "exceptRef", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDatamartHierarchy_OrderRef(), this.getDatamartElement(), null, "orderRef", null, 0, 1, DatamartHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(calculationEClass, Calculation.class, "Calculation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCalculation_Left(), this.getExpression(), null, "left", null, 0, 1, Calculation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCalculation_Right(), this.getExpression(), null, "right", null, 0, 1, Calculation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(datamartReferenceEClass, DatamartReference.class, "DatamartReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getDatamartReference_Ref(), theOSBPEntityPackage.getLEntityReference(), null, "ref", null, 0, 1, DatamartReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(additionEClass, Addition.class, "Addition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(divisionEClass, Division.class, "Division", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(multiplicationEClass, Multiplication.class, "Multiplication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(subtractionEClass, Subtraction.class, "Subtraction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(conjunctionEClass, Conjunction.class, "Conjunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(disjunctionEClass, Disjunction.class, "Disjunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(conditionalExpressionEClass, ConditionalExpression.class, "ConditionalExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getConditionalExpression_Operator(), this.getOperatorEnum(), "operator", null, 0, 1, ConditionalExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(eventBrokerDataMartEClass, EventBrokerDataMart.class, "EventBrokerDataMart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEventBrokerDataMart_Filter(), theEcorePackage.getEString(), "filter", null, 0, 1, EventBrokerDataMart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEventBrokerDataMart_DatamartDef(), this.getDatamartDefinition(), null, "datamartDef", null, 0, 1, EventBrokerDataMart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerDataEClass, PropertyFillerData.class, "PropertyFillerData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertyFillerData_PropertyRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "propertyRef", null, 0, 1, PropertyFillerData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerData_FillerType(), this.getPropertyFillerType(), null, "fillerType", null, 0, 1, PropertyFillerData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerTypeEClass, PropertyFillerType.class, "PropertyFillerType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyFillerDateTypeEClass, PropertyFillerDateType.class, "PropertyFillerDateType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyFillerDoubleTypeEClass, PropertyFillerDoubleType.class, "PropertyFillerDoubleType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyFillerIntegerTypeEClass, PropertyFillerIntegerType.class, "PropertyFillerIntegerType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyFillerTextTypeEClass, PropertyFillerTextType.class, "PropertyFillerTextType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyFillerDateFutureEClass, PropertyFillerDateFuture.class, "PropertyFillerDateFuture", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerDateFuture_DateFutureYears(), theEcorePackage.getEInt(), "dateFutureYears", null, 0, 1, PropertyFillerDateFuture.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerDatePastEClass, PropertyFillerDatePast.class, "PropertyFillerDatePast", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerDatePast_DatePastYears(), theEcorePackage.getEInt(), "datePastYears", null, 0, 1, PropertyFillerDatePast.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerDateRangeEClass, PropertyFillerDateRange.class, "PropertyFillerDateRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerDateRange_DateBeginYears(), theEcorePackage.getEInt(), "dateBeginYears", null, 0, 1, PropertyFillerDateRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerDateRange_DateEndYears(), theEcorePackage.getEInt(), "dateEndYears", null, 0, 1, PropertyFillerDateRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerSignedDoubleRangeEClass, PropertyFillerSignedDoubleRange.class, "PropertyFillerSignedDoubleRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerSignedDoubleRange_Decimals(), theEcorePackage.getEInt(), "decimals", null, 0, 1, PropertyFillerSignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerSignedDoubleRange_BeginRange(), theEcorePackage.getEDouble(), "beginRange", null, 0, 1, PropertyFillerSignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerSignedDoubleRange_EndRange(), theEcorePackage.getEDouble(), "endRange", null, 0, 1, PropertyFillerSignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerSignedDoubleRange_BeginRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "beginRangeRef", null, 0, 1, PropertyFillerSignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerSignedDoubleRange_EndRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "endRangeRef", null, 0, 1, PropertyFillerSignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerSignedDoubleRange_Rounded(), theEcorePackage.getEDouble(), "rounded", null, 0, 1, PropertyFillerSignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerSignedDoubleRandomEClass, PropertyFillerSignedDoubleRandom.class, "PropertyFillerSignedDoubleRandom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerSignedDoubleRandom_Items(), theEcorePackage.getEDouble(), "items", null, 0, -1, PropertyFillerSignedDoubleRandom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerSignedIntegerRangeEClass, PropertyFillerSignedIntegerRange.class, "PropertyFillerSignedIntegerRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerSignedIntegerRange_BeginRange(), theEcorePackage.getEInt(), "beginRange", null, 0, 1, PropertyFillerSignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerSignedIntegerRange_EndRange(), theEcorePackage.getEInt(), "endRange", null, 0, 1, PropertyFillerSignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerSignedIntegerRange_BeginRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "beginRangeRef", null, 0, 1, PropertyFillerSignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerSignedIntegerRange_EndRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "endRangeRef", null, 0, 1, PropertyFillerSignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerSignedIntegerRange_Rounded(), theEcorePackage.getEInt(), "rounded", null, 0, 1, PropertyFillerSignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerSignedIntegerRandomEClass, PropertyFillerSignedIntegerRandom.class, "PropertyFillerSignedIntegerRandom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerSignedIntegerRandom_Items(), theEcorePackage.getEInt(), "items", null, 0, -1, PropertyFillerSignedIntegerRandom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerTextRandomEClass, PropertyFillerTextRandom.class, "PropertyFillerTextRandom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerTextRandom_Items(), theEcorePackage.getEString(), "items", null, 0, -1, PropertyFillerTextRandom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerTextParagraphsEClass, PropertyFillerTextParagraphs.class, "PropertyFillerTextParagraphs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerTextParagraphs_Count(), theEcorePackage.getEInt(), "count", null, 0, 1, PropertyFillerTextParagraphs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerTextSentencesEClass, PropertyFillerTextSentences.class, "PropertyFillerTextSentences", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerTextSentences_Count(), theEcorePackage.getEInt(), "count", null, 0, 1, PropertyFillerTextSentences.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerTextWordsEClass, PropertyFillerTextWords.class, "PropertyFillerTextWords", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerTextWords_Count(), theEcorePackage.getEInt(), "count", null, 0, 1, PropertyFillerTextWords.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerUnsignedDoubleRangeEClass, PropertyFillerUnsignedDoubleRange.class, "PropertyFillerUnsignedDoubleRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerUnsignedDoubleRange_Decimals(), theEcorePackage.getEInt(), "decimals", null, 0, 1, PropertyFillerUnsignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerUnsignedDoubleRange_BeginRange(), theEcorePackage.getEDouble(), "beginRange", null, 0, 1, PropertyFillerUnsignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerUnsignedDoubleRange_EndRange(), theEcorePackage.getEDouble(), "endRange", null, 0, 1, PropertyFillerUnsignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerUnsignedDoubleRange_BeginRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "beginRangeRef", null, 0, 1, PropertyFillerUnsignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerUnsignedDoubleRange_EndRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "endRangeRef", null, 0, 1, PropertyFillerUnsignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerUnsignedDoubleRange_Rounded(), theEcorePackage.getEDouble(), "rounded", null, 0, 1, PropertyFillerUnsignedDoubleRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerUnsignedDoubleRandomEClass, PropertyFillerUnsignedDoubleRandom.class, "PropertyFillerUnsignedDoubleRandom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerUnsignedDoubleRandom_Items(), theEcorePackage.getEDouble(), "items", null, 0, -1, PropertyFillerUnsignedDoubleRandom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerUnsignedIntegerRangeEClass, PropertyFillerUnsignedIntegerRange.class, "PropertyFillerUnsignedIntegerRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerUnsignedIntegerRange_BeginRange(), theEcorePackage.getEInt(), "beginRange", null, 0, 1, PropertyFillerUnsignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerUnsignedIntegerRange_EndRange(), theEcorePackage.getEInt(), "endRange", null, 0, 1, PropertyFillerUnsignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerUnsignedIntegerRange_BeginRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "beginRangeRef", null, 0, 1, PropertyFillerUnsignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertyFillerUnsignedIntegerRange_EndRangeRef(), theOSBPEntityPackage.getLEntityAttribute(), null, "endRangeRef", null, 0, 1, PropertyFillerUnsignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getPropertyFillerUnsignedIntegerRange_Rounded(), theEcorePackage.getEInt(), "rounded", null, 0, 1, PropertyFillerUnsignedIntegerRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(propertyFillerUnsignedIntegerRandomEClass, PropertyFillerUnsignedIntegerRandom.class, "PropertyFillerUnsignedIntegerRandom", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyFillerUnsignedIntegerRandom_Items(), theEcorePackage.getEInt(), "items", null, 0, -1, PropertyFillerUnsignedIntegerRandom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(axisEnumEEnum, AxisEnum.class, "AxisEnum");
+		addEEnumLiteral(axisEnumEEnum, AxisEnum.DEFAULT);
+		addEEnumLiteral(axisEnumEEnum, AxisEnum.COLUMNS);
+		addEEnumLiteral(axisEnumEEnum, AxisEnum.ROWS);
+		addEEnumLiteral(axisEnumEEnum, AxisEnum.PAGES);
+		addEEnumLiteral(axisEnumEEnum, AxisEnum.SECTIONS);
+		addEEnumLiteral(axisEnumEEnum, AxisEnum.CHAPTERS);
+
+		initEEnum(functionEnumEEnum, FunctionEnum.class, "FunctionEnum");
+		addEEnumLiteral(functionEnumEEnum, FunctionEnum.PREVMEMBER);
+		addEEnumLiteral(functionEnumEEnum, FunctionEnum.NEXTMEMBER);
+		addEEnumLiteral(functionEnumEEnum, FunctionEnum.FIRSTCHILD);
+		addEEnumLiteral(functionEnumEEnum, FunctionEnum.LASTCHILD);
+
+		initEEnum(parameterFunctionEnumEEnum, ParameterFunctionEnum.class, "ParameterFunctionEnum");
+		addEEnumLiteral(parameterFunctionEnumEEnum, ParameterFunctionEnum.LAG);
+		addEEnumLiteral(parameterFunctionEnumEEnum, ParameterFunctionEnum.LEAD);
+
+		initEEnum(setFunctionEnumEEnum, SetFunctionEnum.class, "SetFunctionEnum");
+		addEEnumLiteral(setFunctionEnumEEnum, SetFunctionEnum.YTD);
+		addEEnumLiteral(setFunctionEnumEEnum, SetFunctionEnum.PERIODSTODATE);
+
+		initEEnum(setParameterFunctionEnumEEnum, SetParameterFunctionEnum.class, "SetParameterFunctionEnum");
+		addEEnumLiteral(setParameterFunctionEnumEEnum, SetParameterFunctionEnum.TAIL);
+		addEEnumLiteral(setParameterFunctionEnumEEnum, SetParameterFunctionEnum.HEAD);
+
+		initEEnum(setAggregationEnumEEnum, SetAggregationEnum.class, "SetAggregationEnum");
+		addEEnumLiteral(setAggregationEnumEEnum, SetAggregationEnum.TOPCOUNT);
+		addEEnumLiteral(setAggregationEnumEEnum, SetAggregationEnum.TOPSUM);
+		addEEnumLiteral(setAggregationEnumEEnum, SetAggregationEnum.TOPPERCENT);
+		addEEnumLiteral(setAggregationEnumEEnum, SetAggregationEnum.BOTTOMCOUNT);
+		addEEnumLiteral(setAggregationEnumEEnum, SetAggregationEnum.BOTTOMSUM);
+		addEEnumLiteral(setAggregationEnumEEnum, SetAggregationEnum.BOTTOMPERCENT);
+
+		initEEnum(aggregationEnumEEnum, AggregationEnum.class, "AggregationEnum");
+		addEEnumLiteral(aggregationEnumEEnum, AggregationEnum.AVG);
+		addEEnumLiteral(aggregationEnumEEnum, AggregationEnum.SUM);
+		addEEnumLiteral(aggregationEnumEEnum, AggregationEnum.AGGREGATE);
+		addEEnumLiteral(aggregationEnumEEnum, AggregationEnum.STDDEV);
+
+		initEEnum(operatorEnumEEnum, OperatorEnum.class, "OperatorEnum");
+		addEEnumLiteral(operatorEnumEEnum, OperatorEnum.EQUALS);
+		addEEnumLiteral(operatorEnumEEnum, OperatorEnum.LESS);
+		addEEnumLiteral(operatorEnumEEnum, OperatorEnum.GREATER);
+		addEEnumLiteral(operatorEnumEEnum, OperatorEnum.LESSEQUAL);
+		addEEnumLiteral(operatorEnumEEnum, OperatorEnum.GREATEREQUAL);
+		addEEnumLiteral(operatorEnumEEnum, OperatorEnum.LIKE);
+
+		initEEnum(sqlAggregationEnumEEnum, SqlAggregationEnum.class, "SqlAggregationEnum");
+		addEEnumLiteral(sqlAggregationEnumEEnum, SqlAggregationEnum.AVG);
+		addEEnumLiteral(sqlAggregationEnumEEnum, SqlAggregationEnum.SUM);
+		addEEnumLiteral(sqlAggregationEnumEEnum, SqlAggregationEnum.COUNT);
+
+		initEEnum(valueScaleEnumEEnum, ValueScaleEnum.class, "ValueScaleEnum");
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS2);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS3);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS4);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS5);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS6);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS7);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS8);
+		addEEnumLiteral(valueScaleEnumEEnum, ValueScaleEnum.AXIS9);
+
+		initEEnum(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.class, "TaskQueryTopicEnum");
+		addEEnumLiteral(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.Q1);
+		addEEnumLiteral(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.Q2);
+		addEEnumLiteral(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.Q3);
+		addEEnumLiteral(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.Q4);
+		addEEnumLiteral(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.Q5);
+		addEEnumLiteral(taskQueryTopicEnumEEnum, TaskQueryTopicEnum.Q6);
+
+		initEEnum(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.class, "TaskQueryColumnEnum");
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P1);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P2);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P3);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P4);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P5);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P6);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P7);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P8);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P9);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P10);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P11);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P12);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P13);
+		addEEnumLiteral(taskQueryColumnEnumEEnum, TaskQueryColumnEnum.P14);
+
+		initEEnum(taskFilterEnumEEnum, TaskFilterEnum.class, "TaskFilterEnum");
+		addEEnumLiteral(taskFilterEnumEEnum, TaskFilterEnum.F1);
+		addEEnumLiteral(taskFilterEnumEEnum, TaskFilterEnum.F2);
+
+		initEEnum(orderEnumEEnum, OrderEnum.class, "OrderEnum");
+		addEEnumLiteral(orderEnumEEnum, OrderEnum.ASC);
+		addEEnumLiteral(orderEnumEEnum, OrderEnum.DESC);
+
+		// 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", "datamartdsl"
+		   });
+	}
+
+} //DatamartDSLPackageImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDefineDerivedMeasureImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDefineDerivedMeasureImpl.java
new file mode 100644
index 0000000..c3782ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDefineDerivedMeasureImpl.java
@@ -0,0 +1,331 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+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.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartBase;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Define Derived Measure</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefineDerivedMeasureImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefineDerivedMeasureImpl#getDerivedElement <em>Derived Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartDefineDerivedMeasureImpl extends MinimalEObjectImpl.Container implements DatamartDefineDerivedMeasure {
+	/**
+	 * 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;
+
+	/**
+	 * The cached value of the '{@link #getDerivedElement() <em>Derived Element</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDerivedElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Expression> derivedElement;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartDefineDerivedMeasureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_DEFINE_DERIVED_MEASURE;
+	}
+
+	/**
+	 * <!-- 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, DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Expression> getDerivedElement() {
+		if (derivedElement == null) {
+			derivedElement = new EObjectContainmentEList<Expression>(Expression.class, this, DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT);
+		}
+		return derivedElement;
+	}
+
+	/**
+	 * <!-- 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 NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT:
+				return ((InternalEList<?>)getDerivedElement()).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 DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME:
+				return getName();
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT:
+				return getDerivedElement();
+		}
+		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 DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME:
+				setName((String)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT:
+				getDerivedElement().clear();
+				getDerivedElement().addAll((Collection<? extends Expression>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT:
+				getDerivedElement().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__DERIVED_ELEMENT:
+				return derivedElement != null && !derivedElement.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == DatamartLazyResolver.class) {
+			switch (derivedFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == DatamartBase.class) {
+			switch (derivedFeatureID) {
+				case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME: return DatamartDSLPackage.DATAMART_BASE__NAME;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == DatamartLazyResolver.class) {
+			switch (baseFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == DatamartBase.class) {
+			switch (baseFeatureID) {
+				case DatamartDSLPackage.DATAMART_BASE__NAME: return DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE__NAME;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+		if (baseClass == DatamartLazyResolver.class) {
+			switch (baseOperationID) {
+				case DatamartDSLPackage.DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT: return DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+				default: return -1;
+			}
+		}
+		if (baseClass == DatamartBase.class) {
+			switch (baseOperationID) {
+				default: return -1;
+			}
+		}
+		return super.eDerivedOperationID(baseOperationID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE___ERESOLVE_PROXY__INTERNALEOBJECT:
+				return eResolveProxy((InternalEObject)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- 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();
+	}
+
+} //DatamartDefineDerivedMeasureImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDefinitionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDefinitionImpl.java
new file mode 100644
index 0000000..2563c74
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDefinitionImpl.java
@@ -0,0 +1,353 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl#isDescription <em>Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl#getDescriptionValue <em>Description Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl#getSource <em>Source</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDefinitionImpl#getRoles <em>Roles</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartDefinitionImpl extends DatamartBaseImpl implements DatamartDefinition {
+	/**
+	 * The default value of the '{@link #isDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DESCRIPTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDescriptionValue() <em>Description Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescriptionValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDescriptionValue() <em>Description Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescriptionValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String descriptionValue = DESCRIPTION_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSource() <em>Source</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartSource source;
+
+	/**
+	 * The cached value of the '{@link #getRoles() <em>Roles</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRoles()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartRole> roles;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartDefinitionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_DEFINITION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDescription(boolean newDescription) {
+		boolean oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION, oldDescription, description));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDescriptionValue() {
+		return descriptionValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDescriptionValue(String newDescriptionValue) {
+		String oldDescriptionValue = descriptionValue;
+		descriptionValue = newDescriptionValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION_VALUE, oldDescriptionValue, descriptionValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSource getSource() {
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSource(DatamartSource newSource, NotificationChain msgs) {
+		DatamartSource oldSource = source;
+		source = newSource;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DEFINITION__SOURCE, oldSource, newSource);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSource(DatamartSource newSource) {
+		if (newSource != source) {
+			NotificationChain msgs = null;
+			if (source != null)
+				msgs = ((InternalEObject)source).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_DEFINITION__SOURCE, null, msgs);
+			if (newSource != null)
+				msgs = ((InternalEObject)newSource).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_DEFINITION__SOURCE, null, msgs);
+			msgs = basicSetSource(newSource, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DEFINITION__SOURCE, newSource, newSource));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartRole> getRoles() {
+		if (roles == null) {
+			roles = new EObjectContainmentEList<DatamartRole>(DatamartRole.class, this, DatamartDSLPackage.DATAMART_DEFINITION__ROLES);
+		}
+		return roles;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DEFINITION__SOURCE:
+				return basicSetSource(null, msgs);
+			case DatamartDSLPackage.DATAMART_DEFINITION__ROLES:
+				return ((InternalEList<?>)getRoles()).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 DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION:
+				return isDescription();
+			case DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION_VALUE:
+				return getDescriptionValue();
+			case DatamartDSLPackage.DATAMART_DEFINITION__SOURCE:
+				return getSource();
+			case DatamartDSLPackage.DATAMART_DEFINITION__ROLES:
+				return getRoles();
+		}
+		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 DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION:
+				setDescription((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION_VALUE:
+				setDescriptionValue((String)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINITION__SOURCE:
+				setSource((DatamartSource)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINITION__ROLES:
+				getRoles().clear();
+				getRoles().addAll((Collection<? extends DatamartRole>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION_VALUE:
+				setDescriptionValue(DESCRIPTION_VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINITION__SOURCE:
+				setSource((DatamartSource)null);
+				return;
+			case DatamartDSLPackage.DATAMART_DEFINITION__ROLES:
+				getRoles().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION:
+				return description != DESCRIPTION_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_DEFINITION__DESCRIPTION_VALUE:
+				return DESCRIPTION_VALUE_EDEFAULT == null ? descriptionValue != null : !DESCRIPTION_VALUE_EDEFAULT.equals(descriptionValue);
+			case DatamartDSLPackage.DATAMART_DEFINITION__SOURCE:
+				return source != null;
+			case DatamartDSLPackage.DATAMART_DEFINITION__ROLES:
+				return roles != null && !roles.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(" (description: ");
+		result.append(description);
+		result.append(", descriptionValue: ");
+		result.append(descriptionValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartDefinitionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDerivedMeasureImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDerivedMeasureImpl.java
new file mode 100644
index 0000000..424f54e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartDerivedMeasureImpl.java
@@ -0,0 +1,290 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Derived Measure</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl#isScaled <em>Scaled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartDerivedMeasureImpl#getDerivedRef <em>Derived Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartDerivedMeasureImpl extends ExpressionImpl implements DatamartDerivedMeasure {
+	/**
+	 * The default value of the '{@link #isScaled() <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScaled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SCALED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isScaled() <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScaled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean scaled = SCALED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ValueScaleEnum SCALE_EDEFAULT = ValueScaleEnum.AXIS;
+
+	/**
+	 * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected ValueScaleEnum scale = SCALE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDerivedRef() <em>Derived Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDerivedRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartDefineDerivedMeasure derivedRef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartDerivedMeasureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_DERIVED_MEASURE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isScaled() {
+		return scaled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScaled(boolean newScaled) {
+		boolean oldScaled = scaled;
+		scaled = newScaled;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALED, oldScaled, scaled));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ValueScaleEnum getScale() {
+		return scale;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScale(ValueScaleEnum newScale) {
+		ValueScaleEnum oldScale = scale;
+		scale = newScale == null ? SCALE_EDEFAULT : newScale;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALE, oldScale, scale));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefineDerivedMeasure getDerivedRef() {
+		if (derivedRef != null && derivedRef.eIsProxy()) {
+			InternalEObject oldDerivedRef = (InternalEObject)derivedRef;
+			derivedRef = (DatamartDefineDerivedMeasure)eResolveProxy(oldDerivedRef);
+			if (derivedRef != oldDerivedRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_DERIVED_MEASURE__DERIVED_REF, oldDerivedRef, derivedRef));
+			}
+		}
+		return derivedRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefineDerivedMeasure basicGetDerivedRef() {
+		return derivedRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerivedRef(DatamartDefineDerivedMeasure newDerivedRef) {
+		DatamartDefineDerivedMeasure oldDerivedRef = derivedRef;
+		derivedRef = newDerivedRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_DERIVED_MEASURE__DERIVED_REF, oldDerivedRef, derivedRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALED:
+				return isScaled();
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALE:
+				return getScale();
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__DERIVED_REF:
+				if (resolve) return getDerivedRef();
+				return basicGetDerivedRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALED:
+				setScaled((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALE:
+				setScale((ValueScaleEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__DERIVED_REF:
+				setDerivedRef((DatamartDefineDerivedMeasure)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALED:
+				setScaled(SCALED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALE:
+				setScale(SCALE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__DERIVED_REF:
+				setDerivedRef((DatamartDefineDerivedMeasure)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALED:
+				return scaled != SCALED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__SCALE:
+				return scale != SCALE_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE__DERIVED_REF:
+				return derivedRef != 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(" (scaled: ");
+		result.append(scaled);
+		result.append(", scale: ");
+		result.append(scale);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartDerivedMeasureImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartEntityImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartEntityImpl.java
new file mode 100644
index 0000000..9decd9a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartEntityImpl.java
@@ -0,0 +1,550 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.LEntity;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getEntityRef <em>Entity Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getNavigations <em>Navigations</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getConditions <em>Conditions</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getOrdering <em>Ordering</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getFillerMinCountRows <em>Filler Min Count Rows</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getFillerMaxCountRows <em>Filler Max Count Rows</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#isTracking <em>Tracking</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartEntityImpl#getFillerDatas <em>Filler Datas</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartEntityImpl extends DatamartLazyResolverImpl implements DatamartEntity {
+	/**
+	 * The cached value of the '{@link #getEntityRef() <em>Entity Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEntityRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntity entityRef;
+
+	/**
+	 * The cached value of the '{@link #getNavigations() <em>Navigations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNavigations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartNavigation> navigations;
+
+	/**
+	 * 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<DatamartProperty> properties;
+
+	/**
+	 * The cached value of the '{@link #getConditions() <em>Conditions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConditions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartCondition> conditions;
+
+	/**
+	 * The cached value of the '{@link #getOrdering() <em>Ordering</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOrdering()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartOrder> ordering;
+
+	/**
+	 * The default value of the '{@link #getFillerMinCountRows() <em>Filler Min Count Rows</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFillerMinCountRows()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FILLER_MIN_COUNT_ROWS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getFillerMinCountRows() <em>Filler Min Count Rows</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFillerMinCountRows()
+	 * @generated
+	 * @ordered
+	 */
+	protected int fillerMinCountRows = FILLER_MIN_COUNT_ROWS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFillerMaxCountRows() <em>Filler Max Count Rows</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFillerMaxCountRows()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FILLER_MAX_COUNT_ROWS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getFillerMaxCountRows() <em>Filler Max Count Rows</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFillerMaxCountRows()
+	 * @generated
+	 * @ordered
+	 */
+	protected int fillerMaxCountRows = FILLER_MAX_COUNT_ROWS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTracking() <em>Tracking</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTracking()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TRACKING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTracking() <em>Tracking</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTracking()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean tracking = TRACKING_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getFillerDatas() <em>Filler Datas</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFillerDatas()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PropertyFillerData> fillerDatas;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartEntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_ENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity getEntityRef() {
+		if (entityRef != null && entityRef.eIsProxy()) {
+			InternalEObject oldEntityRef = (InternalEObject)entityRef;
+			entityRef = (LEntity)eResolveProxy(oldEntityRef);
+			if (entityRef != oldEntityRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_ENTITY__ENTITY_REF, oldEntityRef, entityRef));
+			}
+		}
+		return entityRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity basicGetEntityRef() {
+		return entityRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEntityRef(LEntity newEntityRef) {
+		LEntity oldEntityRef = entityRef;
+		entityRef = newEntityRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ENTITY__ENTITY_REF, oldEntityRef, entityRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartNavigation> getNavigations() {
+		if (navigations == null) {
+			navigations = new EObjectContainmentEList<DatamartNavigation>(DatamartNavigation.class, this, DatamartDSLPackage.DATAMART_ENTITY__NAVIGATIONS);
+		}
+		return navigations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartProperty> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<DatamartProperty>(DatamartProperty.class, this, DatamartDSLPackage.DATAMART_ENTITY__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartCondition> getConditions() {
+		if (conditions == null) {
+			conditions = new EObjectContainmentEList<DatamartCondition>(DatamartCondition.class, this, DatamartDSLPackage.DATAMART_ENTITY__CONDITIONS);
+		}
+		return conditions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartOrder> getOrdering() {
+		if (ordering == null) {
+			ordering = new EObjectContainmentEList<DatamartOrder>(DatamartOrder.class, this, DatamartDSLPackage.DATAMART_ENTITY__ORDERING);
+		}
+		return ordering;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getFillerMinCountRows() {
+		return fillerMinCountRows;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFillerMinCountRows(int newFillerMinCountRows) {
+		int oldFillerMinCountRows = fillerMinCountRows;
+		fillerMinCountRows = newFillerMinCountRows;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS, oldFillerMinCountRows, fillerMinCountRows));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getFillerMaxCountRows() {
+		return fillerMaxCountRows;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFillerMaxCountRows(int newFillerMaxCountRows) {
+		int oldFillerMaxCountRows = fillerMaxCountRows;
+		fillerMaxCountRows = newFillerMaxCountRows;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS, oldFillerMaxCountRows, fillerMaxCountRows));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTracking() {
+		return tracking;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTracking(boolean newTracking) {
+		boolean oldTracking = tracking;
+		tracking = newTracking;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ENTITY__TRACKING, oldTracking, tracking));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<PropertyFillerData> getFillerDatas() {
+		if (fillerDatas == null) {
+			fillerDatas = new EObjectContainmentEList<PropertyFillerData>(PropertyFillerData.class, this, DatamartDSLPackage.DATAMART_ENTITY__FILLER_DATAS);
+		}
+		return fillerDatas;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ENTITY__NAVIGATIONS:
+				return ((InternalEList<?>)getNavigations()).basicRemove(otherEnd, msgs);
+			case DatamartDSLPackage.DATAMART_ENTITY__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case DatamartDSLPackage.DATAMART_ENTITY__CONDITIONS:
+				return ((InternalEList<?>)getConditions()).basicRemove(otherEnd, msgs);
+			case DatamartDSLPackage.DATAMART_ENTITY__ORDERING:
+				return ((InternalEList<?>)getOrdering()).basicRemove(otherEnd, msgs);
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_DATAS:
+				return ((InternalEList<?>)getFillerDatas()).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 DatamartDSLPackage.DATAMART_ENTITY__ENTITY_REF:
+				if (resolve) return getEntityRef();
+				return basicGetEntityRef();
+			case DatamartDSLPackage.DATAMART_ENTITY__NAVIGATIONS:
+				return getNavigations();
+			case DatamartDSLPackage.DATAMART_ENTITY__PROPERTIES:
+				return getProperties();
+			case DatamartDSLPackage.DATAMART_ENTITY__CONDITIONS:
+				return getConditions();
+			case DatamartDSLPackage.DATAMART_ENTITY__ORDERING:
+				return getOrdering();
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS:
+				return getFillerMinCountRows();
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS:
+				return getFillerMaxCountRows();
+			case DatamartDSLPackage.DATAMART_ENTITY__TRACKING:
+				return isTracking();
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_DATAS:
+				return getFillerDatas();
+		}
+		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 DatamartDSLPackage.DATAMART_ENTITY__ENTITY_REF:
+				setEntityRef((LEntity)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__NAVIGATIONS:
+				getNavigations().clear();
+				getNavigations().addAll((Collection<? extends DatamartNavigation>)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends DatamartProperty>)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__CONDITIONS:
+				getConditions().clear();
+				getConditions().addAll((Collection<? extends DatamartCondition>)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__ORDERING:
+				getOrdering().clear();
+				getOrdering().addAll((Collection<? extends DatamartOrder>)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS:
+				setFillerMinCountRows((Integer)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS:
+				setFillerMaxCountRows((Integer)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__TRACKING:
+				setTracking((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_DATAS:
+				getFillerDatas().clear();
+				getFillerDatas().addAll((Collection<? extends PropertyFillerData>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ENTITY__ENTITY_REF:
+				setEntityRef((LEntity)null);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__NAVIGATIONS:
+				getNavigations().clear();
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__PROPERTIES:
+				getProperties().clear();
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__CONDITIONS:
+				getConditions().clear();
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__ORDERING:
+				getOrdering().clear();
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS:
+				setFillerMinCountRows(FILLER_MIN_COUNT_ROWS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS:
+				setFillerMaxCountRows(FILLER_MAX_COUNT_ROWS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__TRACKING:
+				setTracking(TRACKING_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_DATAS:
+				getFillerDatas().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ENTITY__ENTITY_REF:
+				return entityRef != null;
+			case DatamartDSLPackage.DATAMART_ENTITY__NAVIGATIONS:
+				return navigations != null && !navigations.isEmpty();
+			case DatamartDSLPackage.DATAMART_ENTITY__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case DatamartDSLPackage.DATAMART_ENTITY__CONDITIONS:
+				return conditions != null && !conditions.isEmpty();
+			case DatamartDSLPackage.DATAMART_ENTITY__ORDERING:
+				return ordering != null && !ordering.isEmpty();
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MIN_COUNT_ROWS:
+				return fillerMinCountRows != FILLER_MIN_COUNT_ROWS_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_MAX_COUNT_ROWS:
+				return fillerMaxCountRows != FILLER_MAX_COUNT_ROWS_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_ENTITY__TRACKING:
+				return tracking != TRACKING_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_ENTITY__FILLER_DATAS:
+				return fillerDatas != null && !fillerDatas.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(" (fillerMinCountRows: ");
+		result.append(fillerMinCountRows);
+		result.append(", fillerMaxCountRows: ");
+		result.append(fillerMaxCountRows);
+		result.append(", tracking: ");
+		result.append(tracking);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartEntityImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartFunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartFunctionImpl.java
new file mode 100644
index 0000000..6afab20
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartFunctionImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunction;
+import org.eclipse.osbp.xtext.datamartdsl.FunctionEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionImpl#getFunction <em>Function</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartFunctionImpl extends MinimalEObjectImpl.Container implements DatamartFunction {
+	/**
+	 * The default value of the '{@link #getFunction() <em>Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final FunctionEnum FUNCTION_EDEFAULT = FunctionEnum.PREVMEMBER;
+
+	/**
+	 * The cached value of the '{@link #getFunction() <em>Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionEnum function = FUNCTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionEnum getFunction() {
+		return function;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFunction(FunctionEnum newFunction) {
+		FunctionEnum oldFunction = function;
+		function = newFunction == null ? FUNCTION_EDEFAULT : newFunction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_FUNCTION__FUNCTION, oldFunction, function));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION__FUNCTION:
+				return getFunction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION__FUNCTION:
+				setFunction((FunctionEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION__FUNCTION:
+				setFunction(FUNCTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION__FUNCTION:
+				return function != FUNCTION_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(" (function: ");
+		result.append(function);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartFunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartFunctionIntParameterImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartFunctionIntParameterImpl.java
new file mode 100644
index 0000000..d3f27ce
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartFunctionIntParameterImpl.java
@@ -0,0 +1,174 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Function Int Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartFunctionIntParameterImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartFunctionIntParameterImpl extends MinimalEObjectImpl.Container implements DatamartFunctionIntParameter {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartFunctionIntParameterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_FUNCTION_INT_PARAMETER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(int newValue) {
+		int oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER__VALUE:
+				setValue((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER__VALUE:
+				return value != 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(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartFunctionIntParameterImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartHierarchyImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartHierarchyImpl.java
new file mode 100644
index 0000000..5959270
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartHierarchyImpl.java
@@ -0,0 +1,761 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Hierarchy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isDefaultMember <em>Default Member</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isAllMember <em>All Member</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isAllLevels <em>All Levels</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isAll <em>All</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isExcept <em>Except</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isOrdered <em>Ordered</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#isDescending <em>Descending</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#getHierarchyRef <em>Hierarchy Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#getLevelRef <em>Level Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#getExceptRef <em>Except Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartHierarchyImpl#getOrderRef <em>Order Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartHierarchyImpl extends ExpressionImpl implements DatamartHierarchy {
+	/**
+	 * 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 #isAllMember() <em>All Member</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAllMember()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ALL_MEMBER_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAllMember() <em>All Member</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAllMember()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean allMember = ALL_MEMBER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAllLevels() <em>All Levels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAllLevels()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ALL_LEVELS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAllLevels() <em>All Levels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAllLevels()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean allLevels = ALL_LEVELS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAll() <em>All</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAll()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ALL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAll() <em>All</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAll()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean all = ALL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isExcept() <em>Except</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExcept()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXCEPT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isExcept() <em>Except</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExcept()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean except = EXCEPT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isOrdered() <em>Ordered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOrdered()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ORDERED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isOrdered() <em>Ordered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOrdered()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean ordered = ORDERED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDescending() <em>Descending</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDescending()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DESCENDING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDescending() <em>Descending</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDescending()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean descending = DESCENDING_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHierarchyRef() <em>Hierarchy Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHierarchyRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeHierarchy hierarchyRef;
+
+	/**
+	 * The cached value of the '{@link #getLevelRef() <em>Level Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLevelRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeLevel levelRef;
+
+	/**
+	 * The cached value of the '{@link #getExceptRef() <em>Except Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExceptRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeLevel exceptRef;
+
+	/**
+	 * The cached value of the '{@link #getOrderRef() <em>Order Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOrderRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartElement orderRef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartHierarchyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_HIERARCHY;
+	}
+
+	/**
+	 * <!-- 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, DatamartDSLPackage.DATAMART_HIERARCHY__DEFAULT_MEMBER, oldDefaultMember, defaultMember));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAllMember() {
+		return allMember;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAllMember(boolean newAllMember) {
+		boolean oldAllMember = allMember;
+		allMember = newAllMember;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__ALL_MEMBER, oldAllMember, allMember));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAllLevels() {
+		return allLevels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAllLevels(boolean newAllLevels) {
+		boolean oldAllLevels = allLevels;
+		allLevels = newAllLevels;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__ALL_LEVELS, oldAllLevels, allLevels));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAll() {
+		return all;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAll(boolean newAll) {
+		boolean oldAll = all;
+		all = newAll;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__ALL, oldAll, all));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isExcept() {
+		return except;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExcept(boolean newExcept) {
+		boolean oldExcept = except;
+		except = newExcept;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT, oldExcept, except));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isOrdered() {
+		return ordered;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOrdered(boolean newOrdered) {
+		boolean oldOrdered = ordered;
+		ordered = newOrdered;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__ORDERED, oldOrdered, ordered));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDescending() {
+		return descending;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDescending(boolean newDescending) {
+		boolean oldDescending = descending;
+		descending = newDescending;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__DESCENDING, oldDescending, descending));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeHierarchy getHierarchyRef() {
+		if (hierarchyRef != null && hierarchyRef.eIsProxy()) {
+			InternalEObject oldHierarchyRef = (InternalEObject)hierarchyRef;
+			hierarchyRef = (CubeHierarchy)eResolveProxy(oldHierarchyRef);
+			if (hierarchyRef != oldHierarchyRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_HIERARCHY__HIERARCHY_REF, oldHierarchyRef, hierarchyRef));
+			}
+		}
+		return hierarchyRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeHierarchy basicGetHierarchyRef() {
+		return hierarchyRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHierarchyRef(CubeHierarchy newHierarchyRef) {
+		CubeHierarchy oldHierarchyRef = hierarchyRef;
+		hierarchyRef = newHierarchyRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__HIERARCHY_REF, oldHierarchyRef, hierarchyRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevel getLevelRef() {
+		if (levelRef != null && levelRef.eIsProxy()) {
+			InternalEObject oldLevelRef = (InternalEObject)levelRef;
+			levelRef = (CubeLevel)eResolveProxy(oldLevelRef);
+			if (levelRef != oldLevelRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_HIERARCHY__LEVEL_REF, oldLevelRef, levelRef));
+			}
+		}
+		return levelRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevel basicGetLevelRef() {
+		return levelRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLevelRef(CubeLevel newLevelRef) {
+		CubeLevel oldLevelRef = levelRef;
+		levelRef = newLevelRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__LEVEL_REF, oldLevelRef, levelRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevel getExceptRef() {
+		if (exceptRef != null && exceptRef.eIsProxy()) {
+			InternalEObject oldExceptRef = (InternalEObject)exceptRef;
+			exceptRef = (CubeLevel)eResolveProxy(oldExceptRef);
+			if (exceptRef != oldExceptRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT_REF, oldExceptRef, exceptRef));
+			}
+		}
+		return exceptRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevel basicGetExceptRef() {
+		return exceptRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExceptRef(CubeLevel newExceptRef) {
+		CubeLevel oldExceptRef = exceptRef;
+		exceptRef = newExceptRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT_REF, oldExceptRef, exceptRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartElement getOrderRef() {
+		return orderRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOrderRef(DatamartElement newOrderRef, NotificationChain msgs) {
+		DatamartElement oldOrderRef = orderRef;
+		orderRef = newOrderRef;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF, oldOrderRef, newOrderRef);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOrderRef(DatamartElement newOrderRef) {
+		if (newOrderRef != orderRef) {
+			NotificationChain msgs = null;
+			if (orderRef != null)
+				msgs = ((InternalEObject)orderRef).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF, null, msgs);
+			if (newOrderRef != null)
+				msgs = ((InternalEObject)newOrderRef).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF, null, msgs);
+			msgs = basicSetOrderRef(newOrderRef, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF, newOrderRef, newOrderRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF:
+				return basicSetOrderRef(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 DatamartDSLPackage.DATAMART_HIERARCHY__DEFAULT_MEMBER:
+				return isDefaultMember();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_MEMBER:
+				return isAllMember();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_LEVELS:
+				return isAllLevels();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL:
+				return isAll();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT:
+				return isExcept();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDERED:
+				return isOrdered();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DESCENDING:
+				return isDescending();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__HIERARCHY_REF:
+				if (resolve) return getHierarchyRef();
+				return basicGetHierarchyRef();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__LEVEL_REF:
+				if (resolve) return getLevelRef();
+				return basicGetLevelRef();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT_REF:
+				if (resolve) return getExceptRef();
+				return basicGetExceptRef();
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF:
+				return getOrderRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DEFAULT_MEMBER:
+				setDefaultMember((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_MEMBER:
+				setAllMember((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_LEVELS:
+				setAllLevels((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL:
+				setAll((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT:
+				setExcept((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDERED:
+				setOrdered((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DESCENDING:
+				setDescending((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__HIERARCHY_REF:
+				setHierarchyRef((CubeHierarchy)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__LEVEL_REF:
+				setLevelRef((CubeLevel)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT_REF:
+				setExceptRef((CubeLevel)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF:
+				setOrderRef((DatamartElement)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DEFAULT_MEMBER:
+				setDefaultMember(DEFAULT_MEMBER_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_MEMBER:
+				setAllMember(ALL_MEMBER_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_LEVELS:
+				setAllLevels(ALL_LEVELS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL:
+				setAll(ALL_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT:
+				setExcept(EXCEPT_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DESCENDING:
+				setDescending(DESCENDING_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__HIERARCHY_REF:
+				setHierarchyRef((CubeHierarchy)null);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__LEVEL_REF:
+				setLevelRef((CubeLevel)null);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT_REF:
+				setExceptRef((CubeLevel)null);
+				return;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF:
+				setOrderRef((DatamartElement)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DEFAULT_MEMBER:
+				return defaultMember != DEFAULT_MEMBER_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_MEMBER:
+				return allMember != ALL_MEMBER_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL_LEVELS:
+				return allLevels != ALL_LEVELS_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ALL:
+				return all != ALL_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT:
+				return except != EXCEPT_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__DESCENDING:
+				return descending != DESCENDING_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__HIERARCHY_REF:
+				return hierarchyRef != null;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__LEVEL_REF:
+				return levelRef != null;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__EXCEPT_REF:
+				return exceptRef != null;
+			case DatamartDSLPackage.DATAMART_HIERARCHY__ORDER_REF:
+				return orderRef != 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(" (defaultMember: ");
+		result.append(defaultMember);
+		result.append(", allMember: ");
+		result.append(allMember);
+		result.append(", allLevels: ");
+		result.append(allLevels);
+		result.append(", all: ");
+		result.append(all);
+		result.append(", except: ");
+		result.append(except);
+		result.append(", ordered: ");
+		result.append(ordered);
+		result.append(", descending: ");
+		result.append(descending);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartHierarchyImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartLazyResolverImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartLazyResolverImpl.java
new file mode 100644
index 0000000..fbcfed4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartLazyResolverImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartLazyResolverImpl extends MinimalEObjectImpl.Container implements DatamartLazyResolver {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartLazyResolverImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_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 DatamartDSLPackage.DATAMART_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT:
+				return eResolveProxy((InternalEObject)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //DatamartLazyResolverImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMeasureImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMeasureImpl.java
new file mode 100644
index 0000000..fc9a73b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMeasureImpl.java
@@ -0,0 +1,291 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.xtext.cubedsl.CubeMeasure;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Measure</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl#isScaled <em>Scaled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartMeasureImpl#getMeasureRef <em>Measure Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartMeasureImpl extends ExpressionImpl implements DatamartMeasure {
+	/**
+	 * The default value of the '{@link #isScaled() <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScaled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SCALED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isScaled() <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScaled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean scaled = SCALED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ValueScaleEnum SCALE_EDEFAULT = ValueScaleEnum.AXIS;
+
+	/**
+	 * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected ValueScaleEnum scale = SCALE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMeasureRef() <em>Measure Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeasureRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeMeasure measureRef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartMeasureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_MEASURE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isScaled() {
+		return scaled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScaled(boolean newScaled) {
+		boolean oldScaled = scaled;
+		scaled = newScaled;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_MEASURE__SCALED, oldScaled, scaled));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ValueScaleEnum getScale() {
+		return scale;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScale(ValueScaleEnum newScale) {
+		ValueScaleEnum oldScale = scale;
+		scale = newScale == null ? SCALE_EDEFAULT : newScale;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_MEASURE__SCALE, oldScale, scale));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeMeasure getMeasureRef() {
+		if (measureRef != null && measureRef.eIsProxy()) {
+			InternalEObject oldMeasureRef = (InternalEObject)measureRef;
+			measureRef = (CubeMeasure)eResolveProxy(oldMeasureRef);
+			if (measureRef != oldMeasureRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_MEASURE__MEASURE_REF, oldMeasureRef, measureRef));
+			}
+		}
+		return measureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeMeasure basicGetMeasureRef() {
+		return measureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMeasureRef(CubeMeasure newMeasureRef) {
+		CubeMeasure oldMeasureRef = measureRef;
+		measureRef = newMeasureRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_MEASURE__MEASURE_REF, oldMeasureRef, measureRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALED:
+				return isScaled();
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALE:
+				return getScale();
+			case DatamartDSLPackage.DATAMART_MEASURE__MEASURE_REF:
+				if (resolve) return getMeasureRef();
+				return basicGetMeasureRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALED:
+				setScaled((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALE:
+				setScale((ValueScaleEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_MEASURE__MEASURE_REF:
+				setMeasureRef((CubeMeasure)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALED:
+				setScaled(SCALED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALE:
+				setScale(SCALE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_MEASURE__MEASURE_REF:
+				setMeasureRef((CubeMeasure)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALED:
+				return scaled != SCALED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_MEASURE__SCALE:
+				return scale != SCALE_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_MEASURE__MEASURE_REF:
+				return measureRef != 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(" (scaled: ");
+		result.append(scaled);
+		result.append(", scale: ");
+		result.append(scale);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartMeasureImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMemberImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMemberImpl.java
new file mode 100644
index 0000000..172e98f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMemberImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Member</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartMemberImpl extends DatamartNavigationImpl implements DatamartMember {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartMemberImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_MEMBER;
+	}
+
+} //DatamartMemberImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMemberTupleImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMemberTupleImpl.java
new file mode 100644
index 0000000..6148cec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartMemberTupleImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Member Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartMemberTupleImpl extends DatamartAggregationExpressionImpl implements DatamartMemberTuple {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartMemberTupleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_MEMBER_TUPLE;
+	}
+
+} //DatamartMemberTupleImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartModelImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartModelImpl.java
new file mode 100644
index 0000000..4fcd936
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartModelImpl.java
@@ -0,0 +1,163 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartModelImpl extends MinimalEObjectImpl.Container implements DatamartModel {
+	/**
+	 * The cached value of the '{@link #getPackages() <em>Packages</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPackages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartPackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartPackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<DatamartPackage>(DatamartPackage.class, this, DatamartDSLPackage.DATAMART_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MODEL__PACKAGES:
+				return ((InternalEList<?>)getPackages()).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 DatamartDSLPackage.DATAMART_MODEL__PACKAGES:
+				return getPackages();
+		}
+		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 DatamartDSLPackage.DATAMART_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends DatamartPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartModelImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartNavigationImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartNavigationImpl.java
new file mode 100644
index 0000000..a28a0d4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartNavigationImpl.java
@@ -0,0 +1,253 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Navigation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartNavigationImpl#getJoinRef <em>Join Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartNavigationImpl#getDatamartEntity <em>Datamart Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartNavigationImpl extends DatamartLazyResolverImpl implements DatamartNavigation {
+	/**
+	 * The cached value of the '{@link #getJoinRef() <em>Join Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getJoinRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartReference joinRef;
+
+	/**
+	 * The cached value of the '{@link #getDatamartEntity() <em>Datamart Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatamartEntity()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartEntity datamartEntity;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartNavigationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_NAVIGATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartReference getJoinRef() {
+		return joinRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetJoinRef(DatamartReference newJoinRef, NotificationChain msgs) {
+		DatamartReference oldJoinRef = joinRef;
+		joinRef = newJoinRef;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF, oldJoinRef, newJoinRef);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setJoinRef(DatamartReference newJoinRef) {
+		if (newJoinRef != joinRef) {
+			NotificationChain msgs = null;
+			if (joinRef != null)
+				msgs = ((InternalEObject)joinRef).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF, null, msgs);
+			if (newJoinRef != null)
+				msgs = ((InternalEObject)newJoinRef).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF, null, msgs);
+			msgs = basicSetJoinRef(newJoinRef, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF, newJoinRef, newJoinRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartEntity getDatamartEntity() {
+		return datamartEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDatamartEntity(DatamartEntity newDatamartEntity, NotificationChain msgs) {
+		DatamartEntity oldDatamartEntity = datamartEntity;
+		datamartEntity = newDatamartEntity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY, oldDatamartEntity, newDatamartEntity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDatamartEntity(DatamartEntity newDatamartEntity) {
+		if (newDatamartEntity != datamartEntity) {
+			NotificationChain msgs = null;
+			if (datamartEntity != null)
+				msgs = ((InternalEObject)datamartEntity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY, null, msgs);
+			if (newDatamartEntity != null)
+				msgs = ((InternalEObject)newDatamartEntity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY, null, msgs);
+			msgs = basicSetDatamartEntity(newDatamartEntity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY, newDatamartEntity, newDatamartEntity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF:
+				return basicSetJoinRef(null, msgs);
+			case DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY:
+				return basicSetDatamartEntity(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 DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF:
+				return getJoinRef();
+			case DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY:
+				return getDatamartEntity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF:
+				setJoinRef((DatamartReference)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY:
+				setDatamartEntity((DatamartEntity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF:
+				setJoinRef((DatamartReference)null);
+				return;
+			case DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY:
+				setDatamartEntity((DatamartEntity)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_NAVIGATION__JOIN_REF:
+				return joinRef != null;
+			case DatamartDSLPackage.DATAMART_NAVIGATION__DATAMART_ENTITY:
+				return datamartEntity != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartNavigationImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartOrderImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartOrderImpl.java
new file mode 100644
index 0000000..2d48096
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartOrderImpl.java
@@ -0,0 +1,238 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.OrderEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Order</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOrderImpl#getOrderBy <em>Order By</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartOrderImpl#getOrderHow <em>Order How</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartOrderImpl extends MinimalEObjectImpl.Container implements DatamartOrder {
+	/**
+	 * The cached value of the '{@link #getOrderBy() <em>Order By</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOrderBy()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute orderBy;
+
+	/**
+	 * The default value of the '{@link #getOrderHow() <em>Order How</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOrderHow()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final OrderEnum ORDER_HOW_EDEFAULT = OrderEnum.ASC;
+
+	/**
+	 * The cached value of the '{@link #getOrderHow() <em>Order How</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOrderHow()
+	 * @generated
+	 * @ordered
+	 */
+	protected OrderEnum orderHow = ORDER_HOW_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartOrderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_ORDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getOrderBy() {
+		if (orderBy != null && orderBy.eIsProxy()) {
+			InternalEObject oldOrderBy = (InternalEObject)orderBy;
+			orderBy = (LEntityAttribute)eResolveProxy(oldOrderBy);
+			if (orderBy != oldOrderBy) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_ORDER__ORDER_BY, oldOrderBy, orderBy));
+			}
+		}
+		return orderBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetOrderBy() {
+		return orderBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOrderBy(LEntityAttribute newOrderBy) {
+		LEntityAttribute oldOrderBy = orderBy;
+		orderBy = newOrderBy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ORDER__ORDER_BY, oldOrderBy, orderBy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OrderEnum getOrderHow() {
+		return orderHow;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOrderHow(OrderEnum newOrderHow) {
+		OrderEnum oldOrderHow = orderHow;
+		orderHow = newOrderHow == null ? ORDER_HOW_EDEFAULT : newOrderHow;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ORDER__ORDER_HOW, oldOrderHow, orderHow));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_BY:
+				if (resolve) return getOrderBy();
+				return basicGetOrderBy();
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_HOW:
+				return getOrderHow();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_BY:
+				setOrderBy((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_HOW:
+				setOrderHow((OrderEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_BY:
+				setOrderBy((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_HOW:
+				setOrderHow(ORDER_HOW_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_BY:
+				return orderBy != null;
+			case DatamartDSLPackage.DATAMART_ORDER__ORDER_HOW:
+				return orderHow != ORDER_HOW_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(" (orderHow: ");
+		result.append(orderHow);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartOrderImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartOwnerImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartOwnerImpl.java
new file mode 100644
index 0000000..c95312c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartOwnerImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Owner</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartOwnerImpl extends DatamartNavigationImpl implements DatamartOwner {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartOwnerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_OWNER;
+	}
+
+} //DatamartOwnerImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartPackageImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartPackageImpl.java
new file mode 100644
index 0000000..229463b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartPackageImpl.java
@@ -0,0 +1,163 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPackageImpl#getDefinitions <em>Definitions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartPackageImpl extends LPackageImpl implements DatamartPackage {
+	/**
+	 * The cached value of the '{@link #getDefinitions() <em>Definitions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefinitions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartDefinition> definitions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartPackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_PACKAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartDefinition> getDefinitions() {
+		if (definitions == null) {
+			definitions = new EObjectContainmentEList<DatamartDefinition>(DatamartDefinition.class, this, DatamartDSLPackage.DATAMART_PACKAGE__DEFINITIONS);
+		}
+		return definitions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PACKAGE__DEFINITIONS:
+				return ((InternalEList<?>)getDefinitions()).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 DatamartDSLPackage.DATAMART_PACKAGE__DEFINITIONS:
+				return getDefinitions();
+		}
+		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 DatamartDSLPackage.DATAMART_PACKAGE__DEFINITIONS:
+				getDefinitions().clear();
+				getDefinitions().addAll((Collection<? extends DatamartDefinition>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PACKAGE__DEFINITIONS:
+				getDefinitions().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PACKAGE__DEFINITIONS:
+				return definitions != null && !definitions.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartPackageImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartParameterFunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartParameterFunctionImpl.java
new file mode 100644
index 0000000..10df0dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartParameterFunctionImpl.java
@@ -0,0 +1,256 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Parameter Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartParameterFunctionImpl#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartParameterFunctionImpl#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartParameterFunctionImpl extends MinimalEObjectImpl.Container implements DatamartParameterFunction {
+	/**
+	 * The default value of the '{@link #getFunction() <em>Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ParameterFunctionEnum FUNCTION_EDEFAULT = ParameterFunctionEnum.LAG;
+
+	/**
+	 * The cached value of the '{@link #getFunction() <em>Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected ParameterFunctionEnum function = FUNCTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameter()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartFunctionIntParameter parameter;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartParameterFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_PARAMETER_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ParameterFunctionEnum getFunction() {
+		return function;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFunction(ParameterFunctionEnum newFunction) {
+		ParameterFunctionEnum oldFunction = function;
+		function = newFunction == null ? FUNCTION_EDEFAULT : newFunction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__FUNCTION, oldFunction, function));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionIntParameter getParameter() {
+		return parameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParameter(DatamartFunctionIntParameter newParameter, NotificationChain msgs) {
+		DatamartFunctionIntParameter oldParameter = parameter;
+		parameter = newParameter;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER, oldParameter, newParameter);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParameter(DatamartFunctionIntParameter newParameter) {
+		if (newParameter != parameter) {
+			NotificationChain msgs = null;
+			if (parameter != null)
+				msgs = ((InternalEObject)parameter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER, null, msgs);
+			if (newParameter != null)
+				msgs = ((InternalEObject)newParameter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER, null, msgs);
+			msgs = basicSetParameter(newParameter, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER, newParameter, newParameter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER:
+				return basicSetParameter(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 DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__FUNCTION:
+				return getFunction();
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER:
+				return getParameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__FUNCTION:
+				setFunction((ParameterFunctionEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__FUNCTION:
+				setFunction(FUNCTION_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__FUNCTION:
+				return function != FUNCTION_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION__PARAMETER:
+				return parameter != 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(" (function: ");
+		result.append(function);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartParameterFunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartPropertyImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartPropertyImpl.java
new file mode 100644
index 0000000..35ad15a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartPropertyImpl.java
@@ -0,0 +1,1244 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.dsl.semantic.entity.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+import org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#isFiltered <em>Filtered</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#isSelected <em>Selected</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#isOptional <em>Optional</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getNumberValue <em>Number Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getStringValue <em>String Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getHierarchy <em>Hierarchy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getSet <em>Set</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getSetFunction <em>Set Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#isAggregated <em>Aggregated</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#isScaled <em>Scaled</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#isPlaced <em>Placed</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getAxis <em>Axis</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getAggregate <em>Aggregate</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartPropertyImpl#getPropertyRef <em>Property Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartPropertyImpl extends DatamartLazyResolverImpl implements DatamartProperty {
+	/**
+	 * The default value of the '{@link #isFiltered() <em>Filtered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFiltered()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FILTERED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFiltered() <em>Filtered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFiltered()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean filtered = FILTERED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isSelected() <em>Selected</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSelected()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SELECTED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSelected() <em>Selected</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSelected()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean selected = SELECTED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isOptional() <em>Optional</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOptional()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean OPTIONAL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isOptional() <em>Optional</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOptional()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean optional = OPTIONAL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNumberValue() <em>Number Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NUMBER_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getNumberValue() <em>Number Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String numberValue = NUMBER_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getStringValue() <em>String Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStringValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String STRING_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getStringValue() <em>String Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStringValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String stringValue = STRING_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHierarchy() <em>Hierarchy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHierarchy()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartHierarchy hierarchy;
+
+	/**
+	 * The cached value of the '{@link #getAggregation() <em>Aggregation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregation()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartAggregationFunctionInterface aggregation;
+
+	/**
+	 * The cached value of the '{@link #getFunction() <em>Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartFunctionInterface function;
+
+	/**
+	 * The cached value of the '{@link #getSet() <em>Set</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSet()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression set;
+
+	/**
+	 * The cached value of the '{@link #getSetFunction() <em>Set Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSetFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartSetFunctionInterface setFunction;
+
+	/**
+	 * The default value of the '{@link #isAggregated() <em>Aggregated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAggregated()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean AGGREGATED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAggregated() <em>Aggregated</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAggregated()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean aggregated = AGGREGATED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isScaled() <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScaled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SCALED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isScaled() <em>Scaled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScaled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean scaled = SCALED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isPlaced() <em>Placed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPlaced()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean PLACED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isPlaced() <em>Placed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPlaced()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean placed = PLACED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAxis() <em>Axis</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAxis()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final AxisEnum AXIS_EDEFAULT = AxisEnum.DEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAxis() <em>Axis</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAxis()
+	 * @generated
+	 * @ordered
+	 */
+	protected AxisEnum axis = AXIS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAggregate() <em>Aggregate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SqlAggregationEnum AGGREGATE_EDEFAULT = SqlAggregationEnum.AVG;
+
+	/**
+	 * The cached value of the '{@link #getAggregate() <em>Aggregate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregate()
+	 * @generated
+	 * @ordered
+	 */
+	protected SqlAggregationEnum aggregate = AGGREGATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ValueScaleEnum SCALE_EDEFAULT = ValueScaleEnum.AXIS;
+
+	/**
+	 * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected ValueScaleEnum scale = SCALE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getPropertyRef() <em>Property Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPropertyRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute propertyRef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartPropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_PROPERTY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isFiltered() {
+		return filtered;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFiltered(boolean newFiltered) {
+		boolean oldFiltered = filtered;
+		filtered = newFiltered;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__FILTERED, oldFiltered, filtered));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSelected() {
+		return selected;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelected(boolean newSelected) {
+		boolean oldSelected = selected;
+		selected = newSelected;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SELECTED, oldSelected, selected));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isOptional() {
+		return optional;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOptional(boolean newOptional) {
+		boolean oldOptional = optional;
+		optional = newOptional;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL, oldOptional, optional));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getNumberValue() {
+		return numberValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNumberValue(String newNumberValue) {
+		String oldNumberValue = numberValue;
+		numberValue = newNumberValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE, oldNumberValue, numberValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getStringValue() {
+		return stringValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStringValue(String newStringValue) {
+		String oldStringValue = stringValue;
+		stringValue = newStringValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE, oldStringValue, stringValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartHierarchy getHierarchy() {
+		return hierarchy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetHierarchy(DatamartHierarchy newHierarchy, NotificationChain msgs) {
+		DatamartHierarchy oldHierarchy = hierarchy;
+		hierarchy = newHierarchy;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY, oldHierarchy, newHierarchy);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHierarchy(DatamartHierarchy newHierarchy) {
+		if (newHierarchy != hierarchy) {
+			NotificationChain msgs = null;
+			if (hierarchy != null)
+				msgs = ((InternalEObject)hierarchy).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY, null, msgs);
+			if (newHierarchy != null)
+				msgs = ((InternalEObject)newHierarchy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY, null, msgs);
+			msgs = basicSetHierarchy(newHierarchy, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY, newHierarchy, newHierarchy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAggregationFunctionInterface getAggregation() {
+		return aggregation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAggregation(DatamartAggregationFunctionInterface newAggregation, NotificationChain msgs) {
+		DatamartAggregationFunctionInterface oldAggregation = aggregation;
+		aggregation = newAggregation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION, oldAggregation, newAggregation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregation(DatamartAggregationFunctionInterface newAggregation) {
+		if (newAggregation != aggregation) {
+			NotificationChain msgs = null;
+			if (aggregation != null)
+				msgs = ((InternalEObject)aggregation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION, null, msgs);
+			if (newAggregation != null)
+				msgs = ((InternalEObject)newAggregation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION, null, msgs);
+			msgs = basicSetAggregation(newAggregation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION, newAggregation, newAggregation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionInterface getFunction() {
+		return function;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFunction(DatamartFunctionInterface newFunction, NotificationChain msgs) {
+		DatamartFunctionInterface oldFunction = function;
+		function = newFunction;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION, oldFunction, newFunction);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFunction(DatamartFunctionInterface newFunction) {
+		if (newFunction != function) {
+			NotificationChain msgs = null;
+			if (function != null)
+				msgs = ((InternalEObject)function).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION, null, msgs);
+			if (newFunction != null)
+				msgs = ((InternalEObject)newFunction).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION, null, msgs);
+			msgs = basicSetFunction(newFunction, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION, newFunction, newFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getSet() {
+		return set;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSet(Expression newSet, NotificationChain msgs) {
+		Expression oldSet = set;
+		set = newSet;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SET, oldSet, newSet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSet(Expression newSet) {
+		if (newSet != set) {
+			NotificationChain msgs = null;
+			if (set != null)
+				msgs = ((InternalEObject)set).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__SET, null, msgs);
+			if (newSet != null)
+				msgs = ((InternalEObject)newSet).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__SET, null, msgs);
+			msgs = basicSetSet(newSet, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SET, newSet, newSet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetFunctionInterface getSetFunction() {
+		return setFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSetFunction(DatamartSetFunctionInterface newSetFunction, NotificationChain msgs) {
+		DatamartSetFunctionInterface oldSetFunction = setFunction;
+		setFunction = newSetFunction;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION, oldSetFunction, newSetFunction);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSetFunction(DatamartSetFunctionInterface newSetFunction) {
+		if (newSetFunction != setFunction) {
+			NotificationChain msgs = null;
+			if (setFunction != null)
+				msgs = ((InternalEObject)setFunction).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION, null, msgs);
+			if (newSetFunction != null)
+				msgs = ((InternalEObject)newSetFunction).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION, null, msgs);
+			msgs = basicSetSetFunction(newSetFunction, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION, newSetFunction, newSetFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAggregated() {
+		return aggregated;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregated(boolean newAggregated) {
+		boolean oldAggregated = aggregated;
+		aggregated = newAggregated;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATED, oldAggregated, aggregated));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isScaled() {
+		return scaled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScaled(boolean newScaled) {
+		boolean oldScaled = scaled;
+		scaled = newScaled;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SCALED, oldScaled, scaled));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isPlaced() {
+		return placed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPlaced(boolean newPlaced) {
+		boolean oldPlaced = placed;
+		placed = newPlaced;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__PLACED, oldPlaced, placed));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AxisEnum getAxis() {
+		return axis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAxis(AxisEnum newAxis) {
+		AxisEnum oldAxis = axis;
+		axis = newAxis == null ? AXIS_EDEFAULT : newAxis;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__AXIS, oldAxis, axis));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SqlAggregationEnum getAggregate() {
+		return aggregate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregate(SqlAggregationEnum newAggregate) {
+		SqlAggregationEnum oldAggregate = aggregate;
+		aggregate = newAggregate == null ? AGGREGATE_EDEFAULT : newAggregate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATE, oldAggregate, aggregate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ValueScaleEnum getScale() {
+		return scale;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScale(ValueScaleEnum newScale) {
+		ValueScaleEnum oldScale = scale;
+		scale = newScale == null ? SCALE_EDEFAULT : newScale;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__SCALE, oldScale, scale));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getPropertyRef() {
+		if (propertyRef != null && propertyRef.eIsProxy()) {
+			InternalEObject oldPropertyRef = (InternalEObject)propertyRef;
+			propertyRef = (LEntityAttribute)eResolveProxy(oldPropertyRef);
+			if (propertyRef != oldPropertyRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_PROPERTY__PROPERTY_REF, oldPropertyRef, propertyRef));
+			}
+		}
+		return propertyRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetPropertyRef() {
+		return propertyRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPropertyRef(LEntityAttribute newPropertyRef) {
+		LEntityAttribute oldPropertyRef = propertyRef;
+		propertyRef = newPropertyRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_PROPERTY__PROPERTY_REF, oldPropertyRef, propertyRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY:
+				return basicSetHierarchy(null, msgs);
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION:
+				return basicSetAggregation(null, msgs);
+			case DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION:
+				return basicSetFunction(null, msgs);
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET:
+				return basicSetSet(null, msgs);
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION:
+				return basicSetSetFunction(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 DatamartDSLPackage.DATAMART_PROPERTY__FILTERED:
+				return isFiltered();
+			case DatamartDSLPackage.DATAMART_PROPERTY__SELECTED:
+				return isSelected();
+			case DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL:
+				return isOptional();
+			case DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE:
+				return getNumberValue();
+			case DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE:
+				return getStringValue();
+			case DatamartDSLPackage.DATAMART_PROPERTY__VALUE:
+				return getValue();
+			case DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY:
+				return getHierarchy();
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION:
+				return getAggregation();
+			case DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION:
+				return getFunction();
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET:
+				return getSet();
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION:
+				return getSetFunction();
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATED:
+				return isAggregated();
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALED:
+				return isScaled();
+			case DatamartDSLPackage.DATAMART_PROPERTY__PLACED:
+				return isPlaced();
+			case DatamartDSLPackage.DATAMART_PROPERTY__AXIS:
+				return getAxis();
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATE:
+				return getAggregate();
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALE:
+				return getScale();
+			case DatamartDSLPackage.DATAMART_PROPERTY__PROPERTY_REF:
+				if (resolve) return getPropertyRef();
+				return basicGetPropertyRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PROPERTY__FILTERED:
+				setFiltered((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SELECTED:
+				setSelected((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL:
+				setOptional((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE:
+				setNumberValue((String)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE:
+				setStringValue((String)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__VALUE:
+				setValue((String)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY:
+				setHierarchy((DatamartHierarchy)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION:
+				setAggregation((DatamartAggregationFunctionInterface)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION:
+				setFunction((DatamartFunctionInterface)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET:
+				setSet((Expression)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION:
+				setSetFunction((DatamartSetFunctionInterface)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATED:
+				setAggregated((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALED:
+				setScaled((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__PLACED:
+				setPlaced((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AXIS:
+				setAxis((AxisEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATE:
+				setAggregate((SqlAggregationEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALE:
+				setScale((ValueScaleEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__PROPERTY_REF:
+				setPropertyRef((LEntityAttribute)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PROPERTY__FILTERED:
+				setFiltered(FILTERED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SELECTED:
+				setSelected(SELECTED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL:
+				setOptional(OPTIONAL_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE:
+				setNumberValue(NUMBER_VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE:
+				setStringValue(STRING_VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY:
+				setHierarchy((DatamartHierarchy)null);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION:
+				setAggregation((DatamartAggregationFunctionInterface)null);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION:
+				setFunction((DatamartFunctionInterface)null);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET:
+				setSet((Expression)null);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION:
+				setSetFunction((DatamartSetFunctionInterface)null);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATED:
+				setAggregated(AGGREGATED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALED:
+				setScaled(SCALED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__PLACED:
+				setPlaced(PLACED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AXIS:
+				setAxis(AXIS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATE:
+				setAggregate(AGGREGATE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALE:
+				setScale(SCALE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_PROPERTY__PROPERTY_REF:
+				setPropertyRef((LEntityAttribute)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_PROPERTY__FILTERED:
+				return filtered != FILTERED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SELECTED:
+				return selected != SELECTED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL:
+				return optional != OPTIONAL_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE:
+				return NUMBER_VALUE_EDEFAULT == null ? numberValue != null : !NUMBER_VALUE_EDEFAULT.equals(numberValue);
+			case DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE:
+				return STRING_VALUE_EDEFAULT == null ? stringValue != null : !STRING_VALUE_EDEFAULT.equals(stringValue);
+			case DatamartDSLPackage.DATAMART_PROPERTY__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+			case DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY:
+				return hierarchy != null;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION:
+				return aggregation != null;
+			case DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION:
+				return function != null;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET:
+				return set != null;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION:
+				return setFunction != null;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATED:
+				return aggregated != AGGREGATED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALED:
+				return scaled != SCALED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__PLACED:
+				return placed != PLACED_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AXIS:
+				return axis != AXIS_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATE:
+				return aggregate != AGGREGATE_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__SCALE:
+				return scale != SCALE_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_PROPERTY__PROPERTY_REF:
+				return propertyRef != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == DatamartElement.class) {
+			switch (derivedFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == Expression.class) {
+			switch (derivedFeatureID) {
+				case DatamartDSLPackage.DATAMART_PROPERTY__FILTERED: return DatamartDSLPackage.EXPRESSION__FILTERED;
+				case DatamartDSLPackage.DATAMART_PROPERTY__SELECTED: return DatamartDSLPackage.EXPRESSION__SELECTED;
+				case DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL: return DatamartDSLPackage.EXPRESSION__OPTIONAL;
+				case DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE: return DatamartDSLPackage.EXPRESSION__NUMBER_VALUE;
+				case DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE: return DatamartDSLPackage.EXPRESSION__STRING_VALUE;
+				case DatamartDSLPackage.DATAMART_PROPERTY__VALUE: return DatamartDSLPackage.EXPRESSION__VALUE;
+				case DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY: return DatamartDSLPackage.EXPRESSION__HIERARCHY;
+				case DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION: return DatamartDSLPackage.EXPRESSION__AGGREGATION;
+				case DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION: return DatamartDSLPackage.EXPRESSION__FUNCTION;
+				case DatamartDSLPackage.DATAMART_PROPERTY__SET: return DatamartDSLPackage.EXPRESSION__SET;
+				case DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION: return DatamartDSLPackage.EXPRESSION__SET_FUNCTION;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == DatamartElement.class) {
+			switch (baseFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == Expression.class) {
+			switch (baseFeatureID) {
+				case DatamartDSLPackage.EXPRESSION__FILTERED: return DatamartDSLPackage.DATAMART_PROPERTY__FILTERED;
+				case DatamartDSLPackage.EXPRESSION__SELECTED: return DatamartDSLPackage.DATAMART_PROPERTY__SELECTED;
+				case DatamartDSLPackage.EXPRESSION__OPTIONAL: return DatamartDSLPackage.DATAMART_PROPERTY__OPTIONAL;
+				case DatamartDSLPackage.EXPRESSION__NUMBER_VALUE: return DatamartDSLPackage.DATAMART_PROPERTY__NUMBER_VALUE;
+				case DatamartDSLPackage.EXPRESSION__STRING_VALUE: return DatamartDSLPackage.DATAMART_PROPERTY__STRING_VALUE;
+				case DatamartDSLPackage.EXPRESSION__VALUE: return DatamartDSLPackage.DATAMART_PROPERTY__VALUE;
+				case DatamartDSLPackage.EXPRESSION__HIERARCHY: return DatamartDSLPackage.DATAMART_PROPERTY__HIERARCHY;
+				case DatamartDSLPackage.EXPRESSION__AGGREGATION: return DatamartDSLPackage.DATAMART_PROPERTY__AGGREGATION;
+				case DatamartDSLPackage.EXPRESSION__FUNCTION: return DatamartDSLPackage.DATAMART_PROPERTY__FUNCTION;
+				case DatamartDSLPackage.EXPRESSION__SET: return DatamartDSLPackage.DATAMART_PROPERTY__SET;
+				case DatamartDSLPackage.EXPRESSION__SET_FUNCTION: return DatamartDSLPackage.DATAMART_PROPERTY__SET_FUNCTION;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (filtered: ");
+		result.append(filtered);
+		result.append(", selected: ");
+		result.append(selected);
+		result.append(", optional: ");
+		result.append(optional);
+		result.append(", numberValue: ");
+		result.append(numberValue);
+		result.append(", stringValue: ");
+		result.append(stringValue);
+		result.append(", value: ");
+		result.append(value);
+		result.append(", aggregated: ");
+		result.append(aggregated);
+		result.append(", scaled: ");
+		result.append(scaled);
+		result.append(", placed: ");
+		result.append(placed);
+		result.append(", axis: ");
+		result.append(axis);
+		result.append(", aggregate: ");
+		result.append(aggregate);
+		result.append(", scale: ");
+		result.append(scale);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartPropertyImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartReferenceImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartReferenceImpl.java
new file mode 100644
index 0000000..01e3d45
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartReferenceImpl.java
@@ -0,0 +1,168 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.LEntityReference;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartReferenceImpl extends DatamartLazyResolverImpl implements DatamartReference {
+	/**
+	 * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityReference ref;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityReference getRef() {
+		if (ref != null && ref.eIsProxy()) {
+			InternalEObject oldRef = (InternalEObject)ref;
+			ref = (LEntityReference)eResolveProxy(oldRef);
+			if (ref != oldRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_REFERENCE__REF, oldRef, ref));
+			}
+		}
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityReference basicGetRef() {
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRef(LEntityReference newRef) {
+		LEntityReference oldRef = ref;
+		ref = newRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_REFERENCE__REF, oldRef, ref));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_REFERENCE__REF:
+				if (resolve) return getRef();
+				return basicGetRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_REFERENCE__REF:
+				setRef((LEntityReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_REFERENCE__REF:
+				setRef((LEntityReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_REFERENCE__REF:
+				return ref != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartReferenceImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartRoleImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartRoleImpl.java
new file mode 100644
index 0000000..d9efdc0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartRoleImpl.java
@@ -0,0 +1,168 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.xtext.authorizationdsl.Role;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Role</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartRoleImpl#getAssignedRole <em>Assigned Role</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartRoleImpl extends DatamartLazyResolverImpl implements DatamartRole {
+	/**
+	 * The cached value of the '{@link #getAssignedRole() <em>Assigned Role</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAssignedRole()
+	 * @generated
+	 * @ordered
+	 */
+	protected Role assignedRole;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartRoleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_ROLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Role getAssignedRole() {
+		if (assignedRole != null && assignedRole.eIsProxy()) {
+			InternalEObject oldAssignedRole = (InternalEObject)assignedRole;
+			assignedRole = (Role)eResolveProxy(oldAssignedRole);
+			if (assignedRole != oldAssignedRole) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.DATAMART_ROLE__ASSIGNED_ROLE, oldAssignedRole, assignedRole));
+			}
+		}
+		return assignedRole;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Role basicGetAssignedRole() {
+		return assignedRole;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAssignedRole(Role newAssignedRole) {
+		Role oldAssignedRole = assignedRole;
+		assignedRole = newAssignedRole;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_ROLE__ASSIGNED_ROLE, oldAssignedRole, assignedRole));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ROLE__ASSIGNED_ROLE:
+				if (resolve) return getAssignedRole();
+				return basicGetAssignedRole();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ROLE__ASSIGNED_ROLE:
+				setAssignedRole((Role)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ROLE__ASSIGNED_ROLE:
+				setAssignedRole((Role)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_ROLE__ASSIGNED_ROLE:
+				return assignedRole != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartRoleImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetAggregationFunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetAggregationFunctionImpl.java
new file mode 100644
index 0000000..2ba33bf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetAggregationFunctionImpl.java
@@ -0,0 +1,256 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Set Aggregation Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationFunctionImpl#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetAggregationFunctionImpl#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartSetAggregationFunctionImpl extends MinimalEObjectImpl.Container implements DatamartSetAggregationFunction {
+	/**
+	 * The default value of the '{@link #getAggregation() <em>Aggregation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SetAggregationEnum AGGREGATION_EDEFAULT = SetAggregationEnum.TOPCOUNT;
+
+	/**
+	 * The cached value of the '{@link #getAggregation() <em>Aggregation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregation()
+	 * @generated
+	 * @ordered
+	 */
+	protected SetAggregationEnum aggregation = AGGREGATION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameter()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartFunctionIntParameter parameter;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartSetAggregationFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_SET_AGGREGATION_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SetAggregationEnum getAggregation() {
+		return aggregation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregation(SetAggregationEnum newAggregation) {
+		SetAggregationEnum oldAggregation = aggregation;
+		aggregation = newAggregation == null ? AGGREGATION_EDEFAULT : newAggregation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION, oldAggregation, aggregation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionIntParameter getParameter() {
+		return parameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParameter(DatamartFunctionIntParameter newParameter, NotificationChain msgs) {
+		DatamartFunctionIntParameter oldParameter = parameter;
+		parameter = newParameter;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER, oldParameter, newParameter);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParameter(DatamartFunctionIntParameter newParameter) {
+		if (newParameter != parameter) {
+			NotificationChain msgs = null;
+			if (parameter != null)
+				msgs = ((InternalEObject)parameter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER, null, msgs);
+			if (newParameter != null)
+				msgs = ((InternalEObject)newParameter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER, null, msgs);
+			msgs = basicSetParameter(newParameter, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER, newParameter, newParameter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER:
+				return basicSetParameter(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 DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION:
+				return getAggregation();
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER:
+				return getParameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION:
+				setAggregation((SetAggregationEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION:
+				setAggregation(AGGREGATION_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION:
+				return aggregation != AGGREGATION_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER:
+				return parameter != 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(" (aggregation: ");
+		result.append(aggregation);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartSetAggregationFunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetAggregationImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetAggregationImpl.java
new file mode 100644
index 0000000..7ed1623
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetAggregationImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Set Aggregation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartSetAggregationImpl extends DatamartAggregationExpressionImpl implements DatamartSetAggregation {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartSetAggregationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_SET_AGGREGATION;
+	}
+
+} //DatamartSetAggregationImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetFunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetFunctionImpl.java
new file mode 100644
index 0000000..b211e5e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetFunctionImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction;
+import org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Set Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetFunctionImpl#getSetFunction <em>Set Function</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartSetFunctionImpl extends MinimalEObjectImpl.Container implements DatamartSetFunction {
+	/**
+	 * The default value of the '{@link #getSetFunction() <em>Set Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSetFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SetFunctionEnum SET_FUNCTION_EDEFAULT = SetFunctionEnum.YTD;
+
+	/**
+	 * The cached value of the '{@link #getSetFunction() <em>Set Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSetFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected SetFunctionEnum setFunction = SET_FUNCTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartSetFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_SET_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SetFunctionEnum getSetFunction() {
+		return setFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSetFunction(SetFunctionEnum newSetFunction) {
+		SetFunctionEnum oldSetFunction = setFunction;
+		setFunction = newSetFunction == null ? SET_FUNCTION_EDEFAULT : newSetFunction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_FUNCTION__SET_FUNCTION, oldSetFunction, setFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION__SET_FUNCTION:
+				return getSetFunction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION__SET_FUNCTION:
+				setSetFunction((SetFunctionEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION__SET_FUNCTION:
+				setSetFunction(SET_FUNCTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION__SET_FUNCTION:
+				return setFunction != SET_FUNCTION_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(" (setFunction: ");
+		result.append(setFunction);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartSetFunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetParameterFunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetParameterFunctionImpl.java
new file mode 100644
index 0000000..b7961af
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetParameterFunctionImpl.java
@@ -0,0 +1,256 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Set Parameter Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetParameterFunctionImpl#getSetFunction <em>Set Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetParameterFunctionImpl#getParameter <em>Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartSetParameterFunctionImpl extends MinimalEObjectImpl.Container implements DatamartSetParameterFunction {
+	/**
+	 * The default value of the '{@link #getSetFunction() <em>Set Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSetFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SetParameterFunctionEnum SET_FUNCTION_EDEFAULT = SetParameterFunctionEnum.TAIL;
+
+	/**
+	 * The cached value of the '{@link #getSetFunction() <em>Set Function</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSetFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected SetParameterFunctionEnum setFunction = SET_FUNCTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getParameter() <em>Parameter</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParameter()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartFunctionIntParameter parameter;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartSetParameterFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_SET_PARAMETER_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SetParameterFunctionEnum getSetFunction() {
+		return setFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSetFunction(SetParameterFunctionEnum newSetFunction) {
+		SetParameterFunctionEnum oldSetFunction = setFunction;
+		setFunction = newSetFunction == null ? SET_FUNCTION_EDEFAULT : newSetFunction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION, oldSetFunction, setFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionIntParameter getParameter() {
+		return parameter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParameter(DatamartFunctionIntParameter newParameter, NotificationChain msgs) {
+		DatamartFunctionIntParameter oldParameter = parameter;
+		parameter = newParameter;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER, oldParameter, newParameter);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParameter(DatamartFunctionIntParameter newParameter) {
+		if (newParameter != parameter) {
+			NotificationChain msgs = null;
+			if (parameter != null)
+				msgs = ((InternalEObject)parameter).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER, null, msgs);
+			if (newParameter != null)
+				msgs = ((InternalEObject)newParameter).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER, null, msgs);
+			msgs = basicSetParameter(newParameter, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER, newParameter, newParameter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER:
+				return basicSetParameter(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 DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION:
+				return getSetFunction();
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER:
+				return getParameter();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION:
+				setSetFunction((SetParameterFunctionEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION:
+				setSetFunction(SET_FUNCTION_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER:
+				setParameter((DatamartFunctionIntParameter)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION:
+				return setFunction != SET_FUNCTION_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER:
+				return parameter != 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(" (setFunction: ");
+		result.append(setFunction);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartSetParameterFunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetTupleImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetTupleImpl.java
new file mode 100644
index 0000000..f9bf367
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSetTupleImpl.java
@@ -0,0 +1,253 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Set Tuple</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetTupleImpl#getLeft <em>Left</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSetTupleImpl#getRight <em>Right</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartSetTupleImpl extends ExpressionImpl implements DatamartSetTuple {
+	/**
+	 * The cached value of the '{@link #getLeft() <em>Left</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLeft()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression left;
+
+	/**
+	 * The cached value of the '{@link #getRight() <em>Right</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRight()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartHierarchy right;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartSetTupleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_SET_TUPLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getLeft() {
+		return left;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetLeft(Expression newLeft, NotificationChain msgs) {
+		Expression oldLeft = left;
+		left = newLeft;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT, oldLeft, newLeft);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLeft(Expression newLeft) {
+		if (newLeft != left) {
+			NotificationChain msgs = null;
+			if (left != null)
+				msgs = ((InternalEObject)left).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT, null, msgs);
+			if (newLeft != null)
+				msgs = ((InternalEObject)newLeft).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT, null, msgs);
+			msgs = basicSetLeft(newLeft, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT, newLeft, newLeft));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartHierarchy getRight() {
+		return right;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRight(DatamartHierarchy newRight, NotificationChain msgs) {
+		DatamartHierarchy oldRight = right;
+		right = newRight;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT, oldRight, newRight);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRight(DatamartHierarchy newRight) {
+		if (newRight != right) {
+			NotificationChain msgs = null;
+			if (right != null)
+				msgs = ((InternalEObject)right).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT, null, msgs);
+			if (newRight != null)
+				msgs = ((InternalEObject)newRight).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT, null, msgs);
+			msgs = basicSetRight(newRight, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT, newRight, newRight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT:
+				return basicSetLeft(null, msgs);
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT:
+				return basicSetRight(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 DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT:
+				return getLeft();
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT:
+				return getRight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT:
+				setLeft((Expression)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT:
+				setRight((DatamartHierarchy)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT:
+				setLeft((Expression)null);
+				return;
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT:
+				setRight((DatamartHierarchy)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__LEFT:
+				return left != null;
+			case DatamartDSLPackage.DATAMART_SET_TUPLE__RIGHT:
+				return right != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartSetTupleImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSlicerImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSlicerImpl.java
new file mode 100644
index 0000000..7e921c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartSlicerImpl.java
@@ -0,0 +1,187 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Slicer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartSlicerImpl#getElement <em>Element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartSlicerImpl extends MinimalEObjectImpl.Container implements DatamartSlicer {
+	/**
+	 * The cached value of the '{@link #getElement() <em>Element</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartElement element;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartSlicerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_SLICER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartElement getElement() {
+		return element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetElement(DatamartElement newElement, NotificationChain msgs) {
+		DatamartElement oldElement = element;
+		element = newElement;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SLICER__ELEMENT, oldElement, newElement);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setElement(DatamartElement newElement) {
+		if (newElement != element) {
+			NotificationChain msgs = null;
+			if (element != null)
+				msgs = ((InternalEObject)element).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SLICER__ELEMENT, null, msgs);
+			if (newElement != null)
+				msgs = ((InternalEObject)newElement).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.DATAMART_SLICER__ELEMENT, null, msgs);
+			msgs = basicSetElement(newElement, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_SLICER__ELEMENT, newElement, newElement));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SLICER__ELEMENT:
+				return basicSetElement(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 DatamartDSLPackage.DATAMART_SLICER__ELEMENT:
+				return getElement();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SLICER__ELEMENT:
+				setElement((DatamartElement)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SLICER__ELEMENT:
+				setElement((DatamartElement)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_SLICER__ELEMENT:
+				return element != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DatamartSlicerImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartTaskFilterImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartTaskFilterImpl.java
new file mode 100644
index 0000000..962bfb8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartTaskFilterImpl.java
@@ -0,0 +1,174 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter;
+import org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Task Filter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskFilterImpl#getFilterRef <em>Filter Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartTaskFilterImpl extends ExpressionImpl implements DatamartTaskFilter {
+	/**
+	 * The default value of the '{@link #getFilterRef() <em>Filter Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilterRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TaskFilterEnum FILTER_REF_EDEFAULT = TaskFilterEnum.F1;
+
+	/**
+	 * The cached value of the '{@link #getFilterRef() <em>Filter Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilterRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected TaskFilterEnum filterRef = FILTER_REF_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartTaskFilterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_TASK_FILTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskFilterEnum getFilterRef() {
+		return filterRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilterRef(TaskFilterEnum newFilterRef) {
+		TaskFilterEnum oldFilterRef = filterRef;
+		filterRef = newFilterRef == null ? FILTER_REF_EDEFAULT : newFilterRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_TASK_FILTER__FILTER_REF, oldFilterRef, filterRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK_FILTER__FILTER_REF:
+				return getFilterRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK_FILTER__FILTER_REF:
+				setFilterRef((TaskFilterEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK_FILTER__FILTER_REF:
+				setFilterRef(FILTER_REF_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK_FILTER__FILTER_REF:
+				return filterRef != FILTER_REF_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(" (filterRef: ");
+		result.append(filterRef);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartTaskFilterImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartTaskImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartTaskImpl.java
new file mode 100644
index 0000000..fd2ff31
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DatamartTaskImpl.java
@@ -0,0 +1,270 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryTopicEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Datamart Task</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl#getTaskQuery <em>Task Query</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl#getColumns <em>Columns</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.DatamartTaskImpl#getConditions <em>Conditions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DatamartTaskImpl extends DatamartLazyResolverImpl implements DatamartTask {
+	/**
+	 * The default value of the '{@link #getTaskQuery() <em>Task Query</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTaskQuery()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final TaskQueryTopicEnum TASK_QUERY_EDEFAULT = TaskQueryTopicEnum.Q1;
+
+	/**
+	 * The cached value of the '{@link #getTaskQuery() <em>Task Query</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTaskQuery()
+	 * @generated
+	 * @ordered
+	 */
+	protected TaskQueryTopicEnum taskQuery = TASK_QUERY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getColumns() <em>Columns</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumns()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartColumn> columns;
+
+	/**
+	 * The cached value of the '{@link #getConditions() <em>Conditions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConditions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DatamartCondition> conditions;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatamartTaskImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DATAMART_TASK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TaskQueryTopicEnum getTaskQuery() {
+		return taskQuery;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTaskQuery(TaskQueryTopicEnum newTaskQuery) {
+		TaskQueryTopicEnum oldTaskQuery = taskQuery;
+		taskQuery = newTaskQuery == null ? TASK_QUERY_EDEFAULT : newTaskQuery;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.DATAMART_TASK__TASK_QUERY, oldTaskQuery, taskQuery));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartColumn> getColumns() {
+		if (columns == null) {
+			columns = new EObjectContainmentEList<DatamartColumn>(DatamartColumn.class, this, DatamartDSLPackage.DATAMART_TASK__COLUMNS);
+		}
+		return columns;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<DatamartCondition> getConditions() {
+		if (conditions == null) {
+			conditions = new EObjectContainmentEList<DatamartCondition>(DatamartCondition.class, this, DatamartDSLPackage.DATAMART_TASK__CONDITIONS);
+		}
+		return conditions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK__COLUMNS:
+				return ((InternalEList<?>)getColumns()).basicRemove(otherEnd, msgs);
+			case DatamartDSLPackage.DATAMART_TASK__CONDITIONS:
+				return ((InternalEList<?>)getConditions()).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 DatamartDSLPackage.DATAMART_TASK__TASK_QUERY:
+				return getTaskQuery();
+			case DatamartDSLPackage.DATAMART_TASK__COLUMNS:
+				return getColumns();
+			case DatamartDSLPackage.DATAMART_TASK__CONDITIONS:
+				return getConditions();
+		}
+		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 DatamartDSLPackage.DATAMART_TASK__TASK_QUERY:
+				setTaskQuery((TaskQueryTopicEnum)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_TASK__COLUMNS:
+				getColumns().clear();
+				getColumns().addAll((Collection<? extends DatamartColumn>)newValue);
+				return;
+			case DatamartDSLPackage.DATAMART_TASK__CONDITIONS:
+				getConditions().clear();
+				getConditions().addAll((Collection<? extends DatamartCondition>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK__TASK_QUERY:
+				setTaskQuery(TASK_QUERY_EDEFAULT);
+				return;
+			case DatamartDSLPackage.DATAMART_TASK__COLUMNS:
+				getColumns().clear();
+				return;
+			case DatamartDSLPackage.DATAMART_TASK__CONDITIONS:
+				getConditions().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.DATAMART_TASK__TASK_QUERY:
+				return taskQuery != TASK_QUERY_EDEFAULT;
+			case DatamartDSLPackage.DATAMART_TASK__COLUMNS:
+				return columns != null && !columns.isEmpty();
+			case DatamartDSLPackage.DATAMART_TASK__CONDITIONS:
+				return conditions != null && !conditions.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(" (taskQuery: ");
+		result.append(taskQuery);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DatamartTaskImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DisjunctionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DisjunctionImpl.java
new file mode 100644
index 0000000..482b626
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DisjunctionImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Disjunction</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DisjunctionImpl extends CalculationImpl implements Disjunction {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DisjunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DISJUNCTION;
+	}
+
+} //DisjunctionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DivisionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DivisionImpl.java
new file mode 100644
index 0000000..d021d0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/DivisionImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.Division;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Division</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DivisionImpl extends CalculationImpl implements Division {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DivisionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.DIVISION;
+	}
+
+} //DivisionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/EventBrokerDataMartImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/EventBrokerDataMartImpl.java
new file mode 100644
index 0000000..e2c0df0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/EventBrokerDataMartImpl.java
@@ -0,0 +1,235 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Event Broker Data Mart</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.EventBrokerDataMartImpl#getFilter <em>Filter</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.EventBrokerDataMartImpl#getDatamartDef <em>Datamart Def</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EventBrokerDataMartImpl extends DatamartLazyResolverImpl implements EventBrokerDataMart {
+	/**
+	 * The default value of the '{@link #getFilter() <em>Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FILTER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFilter() <em>Filter</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilter()
+	 * @generated
+	 * @ordered
+	 */
+	protected String filter = FILTER_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDatamartDef() <em>Datamart Def</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatamartDef()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartDefinition datamartDef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EventBrokerDataMartImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.EVENT_BROKER_DATA_MART;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFilter() {
+		return filter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilter(String newFilter) {
+		String oldFilter = filter;
+		filter = newFilter;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EVENT_BROKER_DATA_MART__FILTER, oldFilter, filter));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefinition getDatamartDef() {
+		if (datamartDef != null && datamartDef.eIsProxy()) {
+			InternalEObject oldDatamartDef = (InternalEObject)datamartDef;
+			datamartDef = (DatamartDefinition)eResolveProxy(oldDatamartDef);
+			if (datamartDef != oldDatamartDef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.EVENT_BROKER_DATA_MART__DATAMART_DEF, oldDatamartDef, datamartDef));
+			}
+		}
+		return datamartDef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDefinition basicGetDatamartDef() {
+		return datamartDef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDatamartDef(DatamartDefinition newDatamartDef) {
+		DatamartDefinition oldDatamartDef = datamartDef;
+		datamartDef = newDatamartDef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EVENT_BROKER_DATA_MART__DATAMART_DEF, oldDatamartDef, datamartDef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__FILTER:
+				return getFilter();
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__DATAMART_DEF:
+				if (resolve) return getDatamartDef();
+				return basicGetDatamartDef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__FILTER:
+				setFilter((String)newValue);
+				return;
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__DATAMART_DEF:
+				setDatamartDef((DatamartDefinition)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__FILTER:
+				setFilter(FILTER_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__DATAMART_DEF:
+				setDatamartDef((DatamartDefinition)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__FILTER:
+				return FILTER_EDEFAULT == null ? filter != null : !FILTER_EDEFAULT.equals(filter);
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART__DATAMART_DEF:
+				return datamartDef != 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(" (filter: ");
+		result.append(filter);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EventBrokerDataMartImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ExpressionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ExpressionImpl.java
new file mode 100644
index 0000000..7449d7a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/ExpressionImpl.java
@@ -0,0 +1,791 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartAggregationFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#isFiltered <em>Filtered</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#isSelected <em>Selected</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#isOptional <em>Optional</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getNumberValue <em>Number Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getStringValue <em>String Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getHierarchy <em>Hierarchy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getAggregation <em>Aggregation</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getFunction <em>Function</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getSet <em>Set</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.ExpressionImpl#getSetFunction <em>Set Function</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExpressionImpl extends DatamartLazyResolverImpl implements Expression {
+	/**
+	 * The default value of the '{@link #isFiltered() <em>Filtered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFiltered()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FILTERED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFiltered() <em>Filtered</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFiltered()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean filtered = FILTERED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isSelected() <em>Selected</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSelected()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SELECTED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSelected() <em>Selected</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSelected()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean selected = SELECTED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isOptional() <em>Optional</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOptional()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean OPTIONAL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isOptional() <em>Optional</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isOptional()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean optional = OPTIONAL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNumberValue() <em>Number Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NUMBER_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getNumberValue() <em>Number Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNumberValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String numberValue = NUMBER_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getStringValue() <em>String Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStringValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String STRING_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getStringValue() <em>String Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStringValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String stringValue = STRING_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHierarchy() <em>Hierarchy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHierarchy()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartHierarchy hierarchy;
+
+	/**
+	 * The cached value of the '{@link #getAggregation() <em>Aggregation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregation()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartAggregationFunctionInterface aggregation;
+
+	/**
+	 * The cached value of the '{@link #getFunction() <em>Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartFunctionInterface function;
+
+	/**
+	 * The cached value of the '{@link #getSet() <em>Set</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSet()
+	 * @generated
+	 * @ordered
+	 */
+	protected Expression set;
+
+	/**
+	 * The cached value of the '{@link #getSetFunction() <em>Set Function</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSetFunction()
+	 * @generated
+	 * @ordered
+	 */
+	protected DatamartSetFunctionInterface setFunction;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ExpressionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isFiltered() {
+		return filtered;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFiltered(boolean newFiltered) {
+		boolean oldFiltered = filtered;
+		filtered = newFiltered;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__FILTERED, oldFiltered, filtered));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSelected() {
+		return selected;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelected(boolean newSelected) {
+		boolean oldSelected = selected;
+		selected = newSelected;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__SELECTED, oldSelected, selected));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isOptional() {
+		return optional;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOptional(boolean newOptional) {
+		boolean oldOptional = optional;
+		optional = newOptional;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__OPTIONAL, oldOptional, optional));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getNumberValue() {
+		return numberValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNumberValue(String newNumberValue) {
+		String oldNumberValue = numberValue;
+		numberValue = newNumberValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__NUMBER_VALUE, oldNumberValue, numberValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getStringValue() {
+		return stringValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStringValue(String newStringValue) {
+		String oldStringValue = stringValue;
+		stringValue = newStringValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__STRING_VALUE, oldStringValue, stringValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartHierarchy getHierarchy() {
+		return hierarchy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetHierarchy(DatamartHierarchy newHierarchy, NotificationChain msgs) {
+		DatamartHierarchy oldHierarchy = hierarchy;
+		hierarchy = newHierarchy;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__HIERARCHY, oldHierarchy, newHierarchy);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHierarchy(DatamartHierarchy newHierarchy) {
+		if (newHierarchy != hierarchy) {
+			NotificationChain msgs = null;
+			if (hierarchy != null)
+				msgs = ((InternalEObject)hierarchy).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__HIERARCHY, null, msgs);
+			if (newHierarchy != null)
+				msgs = ((InternalEObject)newHierarchy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__HIERARCHY, null, msgs);
+			msgs = basicSetHierarchy(newHierarchy, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__HIERARCHY, newHierarchy, newHierarchy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartAggregationFunctionInterface getAggregation() {
+		return aggregation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAggregation(DatamartAggregationFunctionInterface newAggregation, NotificationChain msgs) {
+		DatamartAggregationFunctionInterface oldAggregation = aggregation;
+		aggregation = newAggregation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__AGGREGATION, oldAggregation, newAggregation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregation(DatamartAggregationFunctionInterface newAggregation) {
+		if (newAggregation != aggregation) {
+			NotificationChain msgs = null;
+			if (aggregation != null)
+				msgs = ((InternalEObject)aggregation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__AGGREGATION, null, msgs);
+			if (newAggregation != null)
+				msgs = ((InternalEObject)newAggregation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__AGGREGATION, null, msgs);
+			msgs = basicSetAggregation(newAggregation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__AGGREGATION, newAggregation, newAggregation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartFunctionInterface getFunction() {
+		return function;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFunction(DatamartFunctionInterface newFunction, NotificationChain msgs) {
+		DatamartFunctionInterface oldFunction = function;
+		function = newFunction;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__FUNCTION, oldFunction, newFunction);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFunction(DatamartFunctionInterface newFunction) {
+		if (newFunction != function) {
+			NotificationChain msgs = null;
+			if (function != null)
+				msgs = ((InternalEObject)function).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__FUNCTION, null, msgs);
+			if (newFunction != null)
+				msgs = ((InternalEObject)newFunction).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__FUNCTION, null, msgs);
+			msgs = basicSetFunction(newFunction, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__FUNCTION, newFunction, newFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression getSet() {
+		return set;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSet(Expression newSet, NotificationChain msgs) {
+		Expression oldSet = set;
+		set = newSet;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__SET, oldSet, newSet);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSet(Expression newSet) {
+		if (newSet != set) {
+			NotificationChain msgs = null;
+			if (set != null)
+				msgs = ((InternalEObject)set).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__SET, null, msgs);
+			if (newSet != null)
+				msgs = ((InternalEObject)newSet).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__SET, null, msgs);
+			msgs = basicSetSet(newSet, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__SET, newSet, newSet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartSetFunctionInterface getSetFunction() {
+		return setFunction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSetFunction(DatamartSetFunctionInterface newSetFunction, NotificationChain msgs) {
+		DatamartSetFunctionInterface oldSetFunction = setFunction;
+		setFunction = newSetFunction;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__SET_FUNCTION, oldSetFunction, newSetFunction);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSetFunction(DatamartSetFunctionInterface newSetFunction) {
+		if (newSetFunction != setFunction) {
+			NotificationChain msgs = null;
+			if (setFunction != null)
+				msgs = ((InternalEObject)setFunction).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__SET_FUNCTION, null, msgs);
+			if (newSetFunction != null)
+				msgs = ((InternalEObject)newSetFunction).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.EXPRESSION__SET_FUNCTION, null, msgs);
+			msgs = basicSetSetFunction(newSetFunction, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.EXPRESSION__SET_FUNCTION, newSetFunction, newSetFunction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.EXPRESSION__HIERARCHY:
+				return basicSetHierarchy(null, msgs);
+			case DatamartDSLPackage.EXPRESSION__AGGREGATION:
+				return basicSetAggregation(null, msgs);
+			case DatamartDSLPackage.EXPRESSION__FUNCTION:
+				return basicSetFunction(null, msgs);
+			case DatamartDSLPackage.EXPRESSION__SET:
+				return basicSetSet(null, msgs);
+			case DatamartDSLPackage.EXPRESSION__SET_FUNCTION:
+				return basicSetSetFunction(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 DatamartDSLPackage.EXPRESSION__FILTERED:
+				return isFiltered();
+			case DatamartDSLPackage.EXPRESSION__SELECTED:
+				return isSelected();
+			case DatamartDSLPackage.EXPRESSION__OPTIONAL:
+				return isOptional();
+			case DatamartDSLPackage.EXPRESSION__NUMBER_VALUE:
+				return getNumberValue();
+			case DatamartDSLPackage.EXPRESSION__STRING_VALUE:
+				return getStringValue();
+			case DatamartDSLPackage.EXPRESSION__VALUE:
+				return getValue();
+			case DatamartDSLPackage.EXPRESSION__HIERARCHY:
+				return getHierarchy();
+			case DatamartDSLPackage.EXPRESSION__AGGREGATION:
+				return getAggregation();
+			case DatamartDSLPackage.EXPRESSION__FUNCTION:
+				return getFunction();
+			case DatamartDSLPackage.EXPRESSION__SET:
+				return getSet();
+			case DatamartDSLPackage.EXPRESSION__SET_FUNCTION:
+				return getSetFunction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.EXPRESSION__FILTERED:
+				setFiltered((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__SELECTED:
+				setSelected((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__OPTIONAL:
+				setOptional((Boolean)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__NUMBER_VALUE:
+				setNumberValue((String)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__STRING_VALUE:
+				setStringValue((String)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__VALUE:
+				setValue((String)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__HIERARCHY:
+				setHierarchy((DatamartHierarchy)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__AGGREGATION:
+				setAggregation((DatamartAggregationFunctionInterface)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__FUNCTION:
+				setFunction((DatamartFunctionInterface)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__SET:
+				setSet((Expression)newValue);
+				return;
+			case DatamartDSLPackage.EXPRESSION__SET_FUNCTION:
+				setSetFunction((DatamartSetFunctionInterface)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.EXPRESSION__FILTERED:
+				setFiltered(FILTERED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EXPRESSION__SELECTED:
+				setSelected(SELECTED_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EXPRESSION__OPTIONAL:
+				setOptional(OPTIONAL_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EXPRESSION__NUMBER_VALUE:
+				setNumberValue(NUMBER_VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EXPRESSION__STRING_VALUE:
+				setStringValue(STRING_VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EXPRESSION__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.EXPRESSION__HIERARCHY:
+				setHierarchy((DatamartHierarchy)null);
+				return;
+			case DatamartDSLPackage.EXPRESSION__AGGREGATION:
+				setAggregation((DatamartAggregationFunctionInterface)null);
+				return;
+			case DatamartDSLPackage.EXPRESSION__FUNCTION:
+				setFunction((DatamartFunctionInterface)null);
+				return;
+			case DatamartDSLPackage.EXPRESSION__SET:
+				setSet((Expression)null);
+				return;
+			case DatamartDSLPackage.EXPRESSION__SET_FUNCTION:
+				setSetFunction((DatamartSetFunctionInterface)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.EXPRESSION__FILTERED:
+				return filtered != FILTERED_EDEFAULT;
+			case DatamartDSLPackage.EXPRESSION__SELECTED:
+				return selected != SELECTED_EDEFAULT;
+			case DatamartDSLPackage.EXPRESSION__OPTIONAL:
+				return optional != OPTIONAL_EDEFAULT;
+			case DatamartDSLPackage.EXPRESSION__NUMBER_VALUE:
+				return NUMBER_VALUE_EDEFAULT == null ? numberValue != null : !NUMBER_VALUE_EDEFAULT.equals(numberValue);
+			case DatamartDSLPackage.EXPRESSION__STRING_VALUE:
+				return STRING_VALUE_EDEFAULT == null ? stringValue != null : !STRING_VALUE_EDEFAULT.equals(stringValue);
+			case DatamartDSLPackage.EXPRESSION__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+			case DatamartDSLPackage.EXPRESSION__HIERARCHY:
+				return hierarchy != null;
+			case DatamartDSLPackage.EXPRESSION__AGGREGATION:
+				return aggregation != null;
+			case DatamartDSLPackage.EXPRESSION__FUNCTION:
+				return function != null;
+			case DatamartDSLPackage.EXPRESSION__SET:
+				return set != null;
+			case DatamartDSLPackage.EXPRESSION__SET_FUNCTION:
+				return setFunction != 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(" (filtered: ");
+		result.append(filtered);
+		result.append(", selected: ");
+		result.append(selected);
+		result.append(", optional: ");
+		result.append(optional);
+		result.append(", numberValue: ");
+		result.append(numberValue);
+		result.append(", stringValue: ");
+		result.append(stringValue);
+		result.append(", value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ExpressionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/MultiplicationImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/MultiplicationImpl.java
new file mode 100644
index 0000000..d4892cc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/MultiplicationImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multiplication</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class MultiplicationImpl extends CalculationImpl implements Multiplication {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MultiplicationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.MULTIPLICATION;
+	}
+
+} //MultiplicationImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDataImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDataImpl.java
new file mode 100644
index 0000000..c21abdd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDataImpl.java
@@ -0,0 +1,248 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.dsl.semantic.entity.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDataImpl#getPropertyRef <em>Property Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDataImpl#getFillerType <em>Filler Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerDataImpl extends DatamartLazyResolverImpl implements PropertyFillerData {
+	/**
+	 * The cached value of the '{@link #getPropertyRef() <em>Property Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPropertyRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute propertyRef;
+
+	/**
+	 * The cached value of the '{@link #getFillerType() <em>Filler Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFillerType()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertyFillerType fillerType;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerDataImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getPropertyRef() {
+		if (propertyRef != null && propertyRef.eIsProxy()) {
+			InternalEObject oldPropertyRef = (InternalEObject)propertyRef;
+			propertyRef = (LEntityAttribute)eResolveProxy(oldPropertyRef);
+			if (propertyRef != oldPropertyRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_DATA__PROPERTY_REF, oldPropertyRef, propertyRef));
+			}
+		}
+		return propertyRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetPropertyRef() {
+		return propertyRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPropertyRef(LEntityAttribute newPropertyRef) {
+		LEntityAttribute oldPropertyRef = propertyRef;
+		propertyRef = newPropertyRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATA__PROPERTY_REF, oldPropertyRef, propertyRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PropertyFillerType getFillerType() {
+		return fillerType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFillerType(PropertyFillerType newFillerType, NotificationChain msgs) {
+		PropertyFillerType oldFillerType = fillerType;
+		fillerType = newFillerType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE, oldFillerType, newFillerType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFillerType(PropertyFillerType newFillerType) {
+		if (newFillerType != fillerType) {
+			NotificationChain msgs = null;
+			if (fillerType != null)
+				msgs = ((InternalEObject)fillerType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE, null, msgs);
+			if (newFillerType != null)
+				msgs = ((InternalEObject)newFillerType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE, null, msgs);
+			msgs = basicSetFillerType(newFillerType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE, newFillerType, newFillerType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE:
+				return basicSetFillerType(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 DatamartDSLPackage.PROPERTY_FILLER_DATA__PROPERTY_REF:
+				if (resolve) return getPropertyRef();
+				return basicGetPropertyRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE:
+				return getFillerType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__PROPERTY_REF:
+				setPropertyRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE:
+				setFillerType((PropertyFillerType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__PROPERTY_REF:
+				setPropertyRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE:
+				setFillerType((PropertyFillerType)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__PROPERTY_REF:
+				return propertyRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA__FILLER_TYPE:
+				return fillerType != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PropertyFillerDataImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateFutureImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateFutureImpl.java
new file mode 100644
index 0000000..d76a18f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateFutureImpl.java
@@ -0,0 +1,173 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Date Future</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateFutureImpl#getDateFutureYears <em>Date Future Years</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerDateFutureImpl extends PropertyFillerDateTypeImpl implements PropertyFillerDateFuture {
+	/**
+	 * The default value of the '{@link #getDateFutureYears() <em>Date Future Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateFutureYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DATE_FUTURE_YEARS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDateFutureYears() <em>Date Future Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateFutureYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dateFutureYears = DATE_FUTURE_YEARS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerDateFutureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_FUTURE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDateFutureYears() {
+		return dateFutureYears;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDateFutureYears(int newDateFutureYears) {
+		int oldDateFutureYears = dateFutureYears;
+		dateFutureYears = newDateFutureYears;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS, oldDateFutureYears, dateFutureYears));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS:
+				return getDateFutureYears();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS:
+				setDateFutureYears((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS:
+				setDateFutureYears(DATE_FUTURE_YEARS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS:
+				return dateFutureYears != DATE_FUTURE_YEARS_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(" (dateFutureYears: ");
+		result.append(dateFutureYears);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerDateFutureImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDatePastImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDatePastImpl.java
new file mode 100644
index 0000000..03f6de4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDatePastImpl.java
@@ -0,0 +1,173 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Date Past</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDatePastImpl#getDatePastYears <em>Date Past Years</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerDatePastImpl extends PropertyFillerDateTypeImpl implements PropertyFillerDatePast {
+	/**
+	 * The default value of the '{@link #getDatePastYears() <em>Date Past Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatePastYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DATE_PAST_YEARS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDatePastYears() <em>Date Past Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDatePastYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected int datePastYears = DATE_PAST_YEARS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerDatePastImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_PAST;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDatePastYears() {
+		return datePastYears;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDatePastYears(int newDatePastYears) {
+		int oldDatePastYears = datePastYears;
+		datePastYears = newDatePastYears;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS, oldDatePastYears, datePastYears));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS:
+				return getDatePastYears();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS:
+				setDatePastYears((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS:
+				setDatePastYears(DATE_PAST_YEARS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS:
+				return datePastYears != DATE_PAST_YEARS_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(" (datePastYears: ");
+		result.append(datePastYears);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerDatePastImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateRangeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateRangeImpl.java
new file mode 100644
index 0000000..954d3b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateRangeImpl.java
@@ -0,0 +1,227 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Date Range</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateRangeImpl#getDateBeginYears <em>Date Begin Years</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerDateRangeImpl#getDateEndYears <em>Date End Years</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerDateRangeImpl extends PropertyFillerDateTypeImpl implements PropertyFillerDateRange {
+	/**
+	 * The default value of the '{@link #getDateBeginYears() <em>Date Begin Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateBeginYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DATE_BEGIN_YEARS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDateBeginYears() <em>Date Begin Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateBeginYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dateBeginYears = DATE_BEGIN_YEARS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDateEndYears() <em>Date End Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateEndYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DATE_END_YEARS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDateEndYears() <em>Date End Years</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateEndYears()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dateEndYears = DATE_END_YEARS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerDateRangeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_RANGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDateBeginYears() {
+		return dateBeginYears;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDateBeginYears(int newDateBeginYears) {
+		int oldDateBeginYears = dateBeginYears;
+		dateBeginYears = newDateBeginYears;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS, oldDateBeginYears, dateBeginYears));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDateEndYears() {
+		return dateEndYears;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDateEndYears(int newDateEndYears) {
+		int oldDateEndYears = dateEndYears;
+		dateEndYears = newDateEndYears;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS, oldDateEndYears, dateEndYears));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS:
+				return getDateBeginYears();
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS:
+				return getDateEndYears();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS:
+				setDateBeginYears((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS:
+				setDateEndYears((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS:
+				setDateBeginYears(DATE_BEGIN_YEARS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS:
+				setDateEndYears(DATE_END_YEARS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS:
+				return dateBeginYears != DATE_BEGIN_YEARS_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS:
+				return dateEndYears != DATE_END_YEARS_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(" (dateBeginYears: ");
+		result.append(dateBeginYears);
+		result.append(", dateEndYears: ");
+		result.append(dateEndYears);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerDateRangeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateTypeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateTypeImpl.java
new file mode 100644
index 0000000..e11e8ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDateTypeImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Date Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerDateTypeImpl extends PropertyFillerTypeImpl implements PropertyFillerDateType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerDateTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_TYPE;
+	}
+
+} //PropertyFillerDateTypeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDoubleTypeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDoubleTypeImpl.java
new file mode 100644
index 0000000..159706a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerDoubleTypeImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Double Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerDoubleTypeImpl extends PropertyFillerTypeImpl implements PropertyFillerDoubleType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerDoubleTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_DOUBLE_TYPE;
+	}
+
+} //PropertyFillerDoubleTypeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerIntegerTypeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerIntegerTypeImpl.java
new file mode 100644
index 0000000..4d317a9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerIntegerTypeImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Integer Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerIntegerTypeImpl extends PropertyFillerTypeImpl implements PropertyFillerIntegerType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerIntegerTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_INTEGER_TYPE;
+	}
+
+} //PropertyFillerIntegerTypeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedDoubleRandomImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedDoubleRandomImpl.java
new file mode 100644
index 0000000..0f08b13
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedDoubleRandomImpl.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Signed Double Random</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRandomImpl#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerSignedDoubleRandomImpl extends PropertyFillerDoubleTypeImpl implements PropertyFillerSignedDoubleRandom {
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Double> items;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerSignedDoubleRandomImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Double> getItems() {
+		if (items == null) {
+			items = new EDataTypeEList<Double>(Double.class, this, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS:
+				return getItems();
+		}
+		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 DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends Double>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS:
+				getItems().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM__ITEMS:
+				return items != null && !items.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(" (items: ");
+		result.append(items);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerSignedDoubleRandomImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedDoubleRangeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedDoubleRangeImpl.java
new file mode 100644
index 0000000..aa0c103
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedDoubleRangeImpl.java
@@ -0,0 +1,458 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Signed Double Range</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl#getDecimals <em>Decimals</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedDoubleRangeImpl#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerSignedDoubleRangeImpl extends PropertyFillerDoubleTypeImpl implements PropertyFillerSignedDoubleRange {
+	/**
+	 * The default value of the '{@link #getDecimals() <em>Decimals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDecimals()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DECIMALS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDecimals() <em>Decimals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDecimals()
+	 * @generated
+	 * @ordered
+	 */
+	protected int decimals = DECIMALS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double BEGIN_RANGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected double beginRange = BEGIN_RANGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double END_RANGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected double endRange = END_RANGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBeginRangeRef() <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute beginRangeRef;
+
+	/**
+	 * The cached value of the '{@link #getEndRangeRef() <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute endRangeRef;
+
+	/**
+	 * The default value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ROUNDED_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected double rounded = ROUNDED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerSignedDoubleRangeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDecimals() {
+		return decimals;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDecimals(int newDecimals) {
+		int oldDecimals = decimals;
+		decimals = newDecimals;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS, oldDecimals, decimals));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getBeginRange() {
+		return beginRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRange(double newBeginRange) {
+		double oldBeginRange = beginRange;
+		beginRange = newBeginRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE, oldBeginRange, beginRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getEndRange() {
+		return endRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRange(double newEndRange) {
+		double oldEndRange = endRange;
+		endRange = newEndRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE, oldEndRange, endRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getBeginRangeRef() {
+		if (beginRangeRef != null && beginRangeRef.eIsProxy()) {
+			InternalEObject oldBeginRangeRef = (InternalEObject)beginRangeRef;
+			beginRangeRef = (LEntityAttribute)eResolveProxy(oldBeginRangeRef);
+			if (beginRangeRef != oldBeginRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+			}
+		}
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetBeginRangeRef() {
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRangeRef(LEntityAttribute newBeginRangeRef) {
+		LEntityAttribute oldBeginRangeRef = beginRangeRef;
+		beginRangeRef = newBeginRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getEndRangeRef() {
+		if (endRangeRef != null && endRangeRef.eIsProxy()) {
+			InternalEObject oldEndRangeRef = (InternalEObject)endRangeRef;
+			endRangeRef = (LEntityAttribute)eResolveProxy(oldEndRangeRef);
+			if (endRangeRef != oldEndRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+			}
+		}
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetEndRangeRef() {
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRangeRef(LEntityAttribute newEndRangeRef) {
+		LEntityAttribute oldEndRangeRef = endRangeRef;
+		endRangeRef = newEndRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getRounded() {
+		return rounded;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRounded(double newRounded) {
+		double oldRounded = rounded;
+		rounded = newRounded;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED, oldRounded, rounded));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS:
+				return getDecimals();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				return getBeginRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE:
+				return getEndRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				if (resolve) return getBeginRangeRef();
+				return basicGetBeginRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				if (resolve) return getEndRangeRef();
+				return basicGetEndRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED:
+				return getRounded();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS:
+				setDecimals((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				setBeginRange((Double)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE:
+				setEndRange((Double)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED:
+				setRounded((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS:
+				setDecimals(DECIMALS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				setBeginRange(BEGIN_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE:
+				setEndRange(END_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED:
+				setRounded(ROUNDED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__DECIMALS:
+				return decimals != DECIMALS_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				return beginRange != BEGIN_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE:
+				return endRange != END_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				return beginRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				return endRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE__ROUNDED:
+				return rounded != ROUNDED_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(" (decimals: ");
+		result.append(decimals);
+		result.append(", beginRange: ");
+		result.append(beginRange);
+		result.append(", endRange: ");
+		result.append(endRange);
+		result.append(", rounded: ");
+		result.append(rounded);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerSignedDoubleRangeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedIntegerRandomImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedIntegerRandomImpl.java
new file mode 100644
index 0000000..dcf88ee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedIntegerRandomImpl.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Signed Integer Random</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRandomImpl#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerSignedIntegerRandomImpl extends PropertyFillerIntegerTypeImpl implements PropertyFillerSignedIntegerRandom {
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> items;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerSignedIntegerRandomImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Integer> getItems() {
+		if (items == null) {
+			items = new EDataTypeEList<Integer>(Integer.class, this, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS:
+				return getItems();
+		}
+		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 DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS:
+				getItems().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM__ITEMS:
+				return items != null && !items.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(" (items: ");
+		result.append(items);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerSignedIntegerRandomImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedIntegerRangeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedIntegerRangeImpl.java
new file mode 100644
index 0000000..6256484
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerSignedIntegerRangeImpl.java
@@ -0,0 +1,404 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Signed Integer Range</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerSignedIntegerRangeImpl#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerSignedIntegerRangeImpl extends PropertyFillerIntegerTypeImpl implements PropertyFillerSignedIntegerRange {
+	/**
+	 * The default value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BEGIN_RANGE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected int beginRange = BEGIN_RANGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int END_RANGE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected int endRange = END_RANGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBeginRangeRef() <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute beginRangeRef;
+
+	/**
+	 * The cached value of the '{@link #getEndRangeRef() <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute endRangeRef;
+
+	/**
+	 * The default value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int ROUNDED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected int rounded = ROUNDED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerSignedIntegerRangeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_SIGNED_INTEGER_RANGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBeginRange() {
+		return beginRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRange(int newBeginRange) {
+		int oldBeginRange = beginRange;
+		beginRange = newBeginRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE, oldBeginRange, beginRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEndRange() {
+		return endRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRange(int newEndRange) {
+		int oldEndRange = endRange;
+		endRange = newEndRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE, oldEndRange, endRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getBeginRangeRef() {
+		if (beginRangeRef != null && beginRangeRef.eIsProxy()) {
+			InternalEObject oldBeginRangeRef = (InternalEObject)beginRangeRef;
+			beginRangeRef = (LEntityAttribute)eResolveProxy(oldBeginRangeRef);
+			if (beginRangeRef != oldBeginRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+			}
+		}
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetBeginRangeRef() {
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRangeRef(LEntityAttribute newBeginRangeRef) {
+		LEntityAttribute oldBeginRangeRef = beginRangeRef;
+		beginRangeRef = newBeginRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getEndRangeRef() {
+		if (endRangeRef != null && endRangeRef.eIsProxy()) {
+			InternalEObject oldEndRangeRef = (InternalEObject)endRangeRef;
+			endRangeRef = (LEntityAttribute)eResolveProxy(oldEndRangeRef);
+			if (endRangeRef != oldEndRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+			}
+		}
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetEndRangeRef() {
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRangeRef(LEntityAttribute newEndRangeRef) {
+		LEntityAttribute oldEndRangeRef = endRangeRef;
+		endRangeRef = newEndRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getRounded() {
+		return rounded;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRounded(int newRounded) {
+		int oldRounded = rounded;
+		rounded = newRounded;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED, oldRounded, rounded));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				return getBeginRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE:
+				return getEndRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				if (resolve) return getBeginRangeRef();
+				return basicGetBeginRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF:
+				if (resolve) return getEndRangeRef();
+				return basicGetEndRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED:
+				return getRounded();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				setBeginRange((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE:
+				setEndRange((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED:
+				setRounded((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				setBeginRange(BEGIN_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE:
+				setEndRange(END_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED:
+				setRounded(ROUNDED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				return beginRange != BEGIN_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE:
+				return endRange != END_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				return beginRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__END_RANGE_REF:
+				return endRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE__ROUNDED:
+				return rounded != ROUNDED_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(" (beginRange: ");
+		result.append(beginRange);
+		result.append(", endRange: ");
+		result.append(endRange);
+		result.append(", rounded: ");
+		result.append(rounded);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerSignedIntegerRangeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextParagraphsImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextParagraphsImpl.java
new file mode 100644
index 0000000..2dd6a5e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextParagraphsImpl.java
@@ -0,0 +1,173 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Text Paragraphs</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextParagraphsImpl#getCount <em>Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerTextParagraphsImpl extends PropertyFillerTextTypeImpl implements PropertyFillerTextParagraphs {
+	/**
+	 * The default value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int COUNT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected int count = COUNT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerTextParagraphsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_TEXT_PARAGRAPHS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(int newCount) {
+		int oldCount = count;
+		count = newCount;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT, oldCount, count));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT:
+				return getCount();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT:
+				setCount((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT:
+				setCount(COUNT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS__COUNT:
+				return count != COUNT_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(" (count: ");
+		result.append(count);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerTextParagraphsImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextRandomImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextRandomImpl.java
new file mode 100644
index 0000000..e9021c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextRandomImpl.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Text Random</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextRandomImpl#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerTextRandomImpl extends PropertyFillerTextTypeImpl implements PropertyFillerTextRandom {
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> items;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerTextRandomImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_TEXT_RANDOM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<String> getItems() {
+		if (items == null) {
+			items = new EDataTypeEList<String>(String.class, this, DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM__ITEMS:
+				return getItems();
+		}
+		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 DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends String>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM__ITEMS:
+				getItems().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM__ITEMS:
+				return items != null && !items.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(" (items: ");
+		result.append(items);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerTextRandomImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextSentencesImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextSentencesImpl.java
new file mode 100644
index 0000000..0d96ed2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextSentencesImpl.java
@@ -0,0 +1,173 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Text Sentences</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextSentencesImpl#getCount <em>Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerTextSentencesImpl extends PropertyFillerTextTypeImpl implements PropertyFillerTextSentences {
+	/**
+	 * The default value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int COUNT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected int count = COUNT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerTextSentencesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_TEXT_SENTENCES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(int newCount) {
+		int oldCount = count;
+		count = newCount;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES__COUNT, oldCount, count));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES__COUNT:
+				return getCount();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES__COUNT:
+				setCount((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES__COUNT:
+				setCount(COUNT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES__COUNT:
+				return count != COUNT_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(" (count: ");
+		result.append(count);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerTextSentencesImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextTypeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextTypeImpl.java
new file mode 100644
index 0000000..35f9aa2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextTypeImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Text Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerTextTypeImpl extends PropertyFillerTypeImpl implements PropertyFillerTextType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerTextTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_TEXT_TYPE;
+	}
+
+} //PropertyFillerTextTypeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextWordsImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextWordsImpl.java
new file mode 100644
index 0000000..f148602
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTextWordsImpl.java
@@ -0,0 +1,173 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Text Words</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerTextWordsImpl#getCount <em>Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerTextWordsImpl extends PropertyFillerTextTypeImpl implements PropertyFillerTextWords {
+	/**
+	 * The default value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int COUNT_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getCount() <em>Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected int count = COUNT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerTextWordsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_TEXT_WORDS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getCount() {
+		return count;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCount(int newCount) {
+		int oldCount = count;
+		count = newCount;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS__COUNT, oldCount, count));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS__COUNT:
+				return getCount();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS__COUNT:
+				setCount((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS__COUNT:
+				setCount(COUNT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS__COUNT:
+				return count != COUNT_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(" (count: ");
+		result.append(count);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerTextWordsImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTypeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTypeImpl.java
new file mode 100644
index 0000000..a9301a7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerTypeImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerTypeImpl extends DatamartLazyResolverImpl implements PropertyFillerType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_TYPE;
+	}
+
+} //PropertyFillerTypeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedDoubleRandomImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedDoubleRandomImpl.java
new file mode 100644
index 0000000..90cf4b2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedDoubleRandomImpl.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Unsigned Double Random</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRandomImpl#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerUnsignedDoubleRandomImpl extends PropertyFillerDoubleTypeImpl implements PropertyFillerUnsignedDoubleRandom {
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Double> items;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerUnsignedDoubleRandomImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Double> getItems() {
+		if (items == null) {
+			items = new EDataTypeEList<Double>(Double.class, this, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS:
+				return getItems();
+		}
+		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 DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends Double>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS:
+				getItems().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM__ITEMS:
+				return items != null && !items.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(" (items: ");
+		result.append(items);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerUnsignedDoubleRandomImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedDoubleRangeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedDoubleRangeImpl.java
new file mode 100644
index 0000000..93f999d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedDoubleRangeImpl.java
@@ -0,0 +1,458 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Unsigned Double Range</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl#getDecimals <em>Decimals</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedDoubleRangeImpl#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerUnsignedDoubleRangeImpl extends PropertyFillerDoubleTypeImpl implements PropertyFillerUnsignedDoubleRange {
+	/**
+	 * The default value of the '{@link #getDecimals() <em>Decimals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDecimals()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DECIMALS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDecimals() <em>Decimals</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDecimals()
+	 * @generated
+	 * @ordered
+	 */
+	protected int decimals = DECIMALS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double BEGIN_RANGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected double beginRange = BEGIN_RANGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double END_RANGE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected double endRange = END_RANGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBeginRangeRef() <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute beginRangeRef;
+
+	/**
+	 * The cached value of the '{@link #getEndRangeRef() <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute endRangeRef;
+
+	/**
+	 * The default value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ROUNDED_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected double rounded = ROUNDED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerUnsignedDoubleRangeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDecimals() {
+		return decimals;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDecimals(int newDecimals) {
+		int oldDecimals = decimals;
+		decimals = newDecimals;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS, oldDecimals, decimals));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getBeginRange() {
+		return beginRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRange(double newBeginRange) {
+		double oldBeginRange = beginRange;
+		beginRange = newBeginRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE, oldBeginRange, beginRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getEndRange() {
+		return endRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRange(double newEndRange) {
+		double oldEndRange = endRange;
+		endRange = newEndRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE, oldEndRange, endRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getBeginRangeRef() {
+		if (beginRangeRef != null && beginRangeRef.eIsProxy()) {
+			InternalEObject oldBeginRangeRef = (InternalEObject)beginRangeRef;
+			beginRangeRef = (LEntityAttribute)eResolveProxy(oldBeginRangeRef);
+			if (beginRangeRef != oldBeginRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+			}
+		}
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetBeginRangeRef() {
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRangeRef(LEntityAttribute newBeginRangeRef) {
+		LEntityAttribute oldBeginRangeRef = beginRangeRef;
+		beginRangeRef = newBeginRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getEndRangeRef() {
+		if (endRangeRef != null && endRangeRef.eIsProxy()) {
+			InternalEObject oldEndRangeRef = (InternalEObject)endRangeRef;
+			endRangeRef = (LEntityAttribute)eResolveProxy(oldEndRangeRef);
+			if (endRangeRef != oldEndRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+			}
+		}
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetEndRangeRef() {
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRangeRef(LEntityAttribute newEndRangeRef) {
+		LEntityAttribute oldEndRangeRef = endRangeRef;
+		endRangeRef = newEndRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getRounded() {
+		return rounded;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRounded(double newRounded) {
+		double oldRounded = rounded;
+		rounded = newRounded;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED, oldRounded, rounded));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS:
+				return getDecimals();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				return getBeginRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE:
+				return getEndRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				if (resolve) return getBeginRangeRef();
+				return basicGetBeginRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				if (resolve) return getEndRangeRef();
+				return basicGetEndRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED:
+				return getRounded();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS:
+				setDecimals((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				setBeginRange((Double)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE:
+				setEndRange((Double)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED:
+				setRounded((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS:
+				setDecimals(DECIMALS_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				setBeginRange(BEGIN_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE:
+				setEndRange(END_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED:
+				setRounded(ROUNDED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__DECIMALS:
+				return decimals != DECIMALS_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE:
+				return beginRange != BEGIN_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE:
+				return endRange != END_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__BEGIN_RANGE_REF:
+				return beginRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__END_RANGE_REF:
+				return endRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE__ROUNDED:
+				return rounded != ROUNDED_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(" (decimals: ");
+		result.append(decimals);
+		result.append(", beginRange: ");
+		result.append(beginRange);
+		result.append(", endRange: ");
+		result.append(endRange);
+		result.append(", rounded: ");
+		result.append(rounded);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerUnsignedDoubleRangeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedIntegerRandomImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedIntegerRandomImpl.java
new file mode 100644
index 0000000..d16dec3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedIntegerRandomImpl.java
@@ -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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Unsigned Integer Random</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRandomImpl#getItems <em>Items</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerUnsignedIntegerRandomImpl extends PropertyFillerIntegerTypeImpl implements PropertyFillerUnsignedIntegerRandom {
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> items;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerUnsignedIntegerRandomImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Integer> getItems() {
+		if (items == null) {
+			items = new EDataTypeEList<Integer>(Integer.class, this, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS:
+				return getItems();
+		}
+		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 DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS:
+				getItems().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM__ITEMS:
+				return items != null && !items.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(" (items: ");
+		result.append(items);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerUnsignedIntegerRandomImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedIntegerRangeImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedIntegerRangeImpl.java
new file mode 100644
index 0000000..df3f6dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/PropertyFillerUnsignedIntegerRangeImpl.java
@@ -0,0 +1,404 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.LEntityAttribute;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Filler Unsigned Integer Range</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl#getBeginRange <em>Begin Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl#getEndRange <em>End Range</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl#getBeginRangeRef <em>Begin Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl#getEndRangeRef <em>End Range Ref</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.datamartdsl.impl.PropertyFillerUnsignedIntegerRangeImpl#getRounded <em>Rounded</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyFillerUnsignedIntegerRangeImpl extends PropertyFillerIntegerTypeImpl implements PropertyFillerUnsignedIntegerRange {
+	/**
+	 * The default value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BEGIN_RANGE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBeginRange() <em>Begin Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected int beginRange = BEGIN_RANGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int END_RANGE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getEndRange() <em>End Range</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRange()
+	 * @generated
+	 * @ordered
+	 */
+	protected int endRange = END_RANGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBeginRangeRef() <em>Begin Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeginRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute beginRangeRef;
+
+	/**
+	 * The cached value of the '{@link #getEndRangeRef() <em>End Range Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEndRangeRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityAttribute endRangeRef;
+
+	/**
+	 * The default value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int ROUNDED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getRounded() <em>Rounded</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRounded()
+	 * @generated
+	 * @ordered
+	 */
+	protected int rounded = ROUNDED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PropertyFillerUnsignedIntegerRangeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getBeginRange() {
+		return beginRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRange(int newBeginRange) {
+		int oldBeginRange = beginRange;
+		beginRange = newBeginRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE, oldBeginRange, beginRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getEndRange() {
+		return endRange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRange(int newEndRange) {
+		int oldEndRange = endRange;
+		endRange = newEndRange;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE, oldEndRange, endRange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getBeginRangeRef() {
+		if (beginRangeRef != null && beginRangeRef.eIsProxy()) {
+			InternalEObject oldBeginRangeRef = (InternalEObject)beginRangeRef;
+			beginRangeRef = (LEntityAttribute)eResolveProxy(oldBeginRangeRef);
+			if (beginRangeRef != oldBeginRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+			}
+		}
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetBeginRangeRef() {
+		return beginRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBeginRangeRef(LEntityAttribute newBeginRangeRef) {
+		LEntityAttribute oldBeginRangeRef = beginRangeRef;
+		beginRangeRef = newBeginRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF, oldBeginRangeRef, beginRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute getEndRangeRef() {
+		if (endRangeRef != null && endRangeRef.eIsProxy()) {
+			InternalEObject oldEndRangeRef = (InternalEObject)endRangeRef;
+			endRangeRef = (LEntityAttribute)eResolveProxy(oldEndRangeRef);
+			if (endRangeRef != oldEndRangeRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+			}
+		}
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute basicGetEndRangeRef() {
+		return endRangeRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEndRangeRef(LEntityAttribute newEndRangeRef) {
+		LEntityAttribute oldEndRangeRef = endRangeRef;
+		endRangeRef = newEndRangeRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF, oldEndRangeRef, endRangeRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getRounded() {
+		return rounded;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRounded(int newRounded) {
+		int oldRounded = rounded;
+		rounded = newRounded;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED, oldRounded, rounded));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				return getBeginRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE:
+				return getEndRange();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				if (resolve) return getBeginRangeRef();
+				return basicGetBeginRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF:
+				if (resolve) return getEndRangeRef();
+				return basicGetEndRangeRef();
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED:
+				return getRounded();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				setBeginRange((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE:
+				setEndRange((Integer)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)newValue);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED:
+				setRounded((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				setBeginRange(BEGIN_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE:
+				setEndRange(END_RANGE_EDEFAULT);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				setBeginRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF:
+				setEndRangeRef((LEntityAttribute)null);
+				return;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED:
+				setRounded(ROUNDED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE:
+				return beginRange != BEGIN_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE:
+				return endRange != END_RANGE_EDEFAULT;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__BEGIN_RANGE_REF:
+				return beginRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__END_RANGE_REF:
+				return endRangeRef != null;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE__ROUNDED:
+				return rounded != ROUNDED_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(" (beginRange: ");
+		result.append(beginRange);
+		result.append(", endRange: ");
+		result.append(endRange);
+		result.append(", rounded: ");
+		result.append(rounded);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PropertyFillerUnsignedIntegerRangeImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/SubtractionImpl.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/SubtractionImpl.java
new file mode 100644
index 0000000..3e5c5d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/impl/SubtractionImpl.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 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Subtraction</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SubtractionImpl extends CalculationImpl implements Subtraction {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SubtractionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatamartDSLPackage.Literals.SUBTRACTION;
+	}
+
+} //SubtractionImpl
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/util/DatamartDSLAdapterFactory.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/util/DatamartDSLAdapterFactory.java
new file mode 100644
index 0000000..d7a1714
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/util/DatamartDSLAdapterFactory.java
@@ -0,0 +1,1466 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.*;
+
+/**
+ * <!-- 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.datamartdsl.DatamartDSLPackage
+ * @generated
+ */
+public class DatamartDSLAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static DatamartDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDSLAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = DatamartDSLPackage.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 DatamartDSLSwitch<Adapter> modelSwitch =
+		new DatamartDSLSwitch<Adapter>() {
+			@Override
+			public Adapter caseDatamartModel(DatamartModel object) {
+				return createDatamartModelAdapter();
+			}
+			@Override
+			public Adapter caseDatamartLazyResolver(DatamartLazyResolver object) {
+				return createDatamartLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseDatamartBase(DatamartBase object) {
+				return createDatamartBaseAdapter();
+			}
+			@Override
+			public Adapter caseDatamartPackage(DatamartPackage object) {
+				return createDatamartPackageAdapter();
+			}
+			@Override
+			public Adapter caseDatamartDefinition(DatamartDefinition object) {
+				return createDatamartDefinitionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSource(DatamartSource object) {
+				return createDatamartSourceAdapter();
+			}
+			@Override
+			public Adapter caseDatamartRole(DatamartRole object) {
+				return createDatamartRoleAdapter();
+			}
+			@Override
+			public Adapter caseDatamartTask(DatamartTask object) {
+				return createDatamartTaskAdapter();
+			}
+			@Override
+			public Adapter caseDatamartCube(DatamartCube object) {
+				return createDatamartCubeAdapter();
+			}
+			@Override
+			public Adapter caseDatamartEntity(DatamartEntity object) {
+				return createDatamartEntityAdapter();
+			}
+			@Override
+			public Adapter caseDatamartColumn(DatamartColumn object) {
+				return createDatamartColumnAdapter();
+			}
+			@Override
+			public Adapter caseDatamartTaskFilter(DatamartTaskFilter object) {
+				return createDatamartTaskFilterAdapter();
+			}
+			@Override
+			public Adapter caseDatamartNavigation(DatamartNavigation object) {
+				return createDatamartNavigationAdapter();
+			}
+			@Override
+			public Adapter caseDatamartOwner(DatamartOwner object) {
+				return createDatamartOwnerAdapter();
+			}
+			@Override
+			public Adapter caseDatamartMember(DatamartMember object) {
+				return createDatamartMemberAdapter();
+			}
+			@Override
+			public Adapter caseDatamartProperty(DatamartProperty object) {
+				return createDatamartPropertyAdapter();
+			}
+			@Override
+			public Adapter caseExpression(Expression object) {
+				return createExpressionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartCondition(DatamartCondition object) {
+				return createDatamartConditionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartOrder(DatamartOrder object) {
+				return createDatamartOrderAdapter();
+			}
+			@Override
+			public Adapter caseDatamartCubeElement(DatamartCubeElement object) {
+				return createDatamartCubeElementAdapter();
+			}
+			@Override
+			public Adapter caseDatamartDefineDerivedMeasure(DatamartDefineDerivedMeasure object) {
+				return createDatamartDefineDerivedMeasureAdapter();
+			}
+			@Override
+			public Adapter caseDatamartFunctionInterface(DatamartFunctionInterface object) {
+				return createDatamartFunctionInterfaceAdapter();
+			}
+			@Override
+			public Adapter caseDatamartFunction(DatamartFunction object) {
+				return createDatamartFunctionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartParameterFunction(DatamartParameterFunction object) {
+				return createDatamartParameterFunctionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartFunctionIntParameter(DatamartFunctionIntParameter object) {
+				return createDatamartFunctionIntParameterAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSetFunctionInterface(DatamartSetFunctionInterface object) {
+				return createDatamartSetFunctionInterfaceAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSetFunction(DatamartSetFunction object) {
+				return createDatamartSetFunctionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSetParameterFunction(DatamartSetParameterFunction object) {
+				return createDatamartSetParameterFunctionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartAggregationFunctionInterface(DatamartAggregationFunctionInterface object) {
+				return createDatamartAggregationFunctionInterfaceAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSetAggregationFunction(DatamartSetAggregationFunction object) {
+				return createDatamartSetAggregationFunctionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartAggregationExpression(DatamartAggregationExpression object) {
+				return createDatamartAggregationExpressionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSetTuple(DatamartSetTuple object) {
+				return createDatamartSetTupleAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSetAggregation(DatamartSetAggregation object) {
+				return createDatamartSetAggregationAdapter();
+			}
+			@Override
+			public Adapter caseDatamartAggregation(DatamartAggregation object) {
+				return createDatamartAggregationAdapter();
+			}
+			@Override
+			public Adapter caseDatamartMemberTuple(DatamartMemberTuple object) {
+				return createDatamartMemberTupleAdapter();
+			}
+			@Override
+			public Adapter caseDatamartAggregationFunction(DatamartAggregationFunction object) {
+				return createDatamartAggregationFunctionAdapter();
+			}
+			@Override
+			public Adapter caseDatamartSlicer(DatamartSlicer object) {
+				return createDatamartSlicerAdapter();
+			}
+			@Override
+			public Adapter caseDatamartAxis(DatamartAxis object) {
+				return createDatamartAxisAdapter();
+			}
+			@Override
+			public Adapter caseDatamartElement(DatamartElement object) {
+				return createDatamartElementAdapter();
+			}
+			@Override
+			public Adapter caseDatamartDerivedMeasure(DatamartDerivedMeasure object) {
+				return createDatamartDerivedMeasureAdapter();
+			}
+			@Override
+			public Adapter caseDatamartMeasure(DatamartMeasure object) {
+				return createDatamartMeasureAdapter();
+			}
+			@Override
+			public Adapter caseDatamartHierarchy(DatamartHierarchy object) {
+				return createDatamartHierarchyAdapter();
+			}
+			@Override
+			public Adapter caseCalculation(Calculation object) {
+				return createCalculationAdapter();
+			}
+			@Override
+			public Adapter caseDatamartReference(DatamartReference object) {
+				return createDatamartReferenceAdapter();
+			}
+			@Override
+			public Adapter caseAddition(Addition object) {
+				return createAdditionAdapter();
+			}
+			@Override
+			public Adapter caseDivision(Division object) {
+				return createDivisionAdapter();
+			}
+			@Override
+			public Adapter caseMultiplication(Multiplication object) {
+				return createMultiplicationAdapter();
+			}
+			@Override
+			public Adapter caseSubtraction(Subtraction object) {
+				return createSubtractionAdapter();
+			}
+			@Override
+			public Adapter caseConjunction(Conjunction object) {
+				return createConjunctionAdapter();
+			}
+			@Override
+			public Adapter caseDisjunction(Disjunction object) {
+				return createDisjunctionAdapter();
+			}
+			@Override
+			public Adapter caseConditionalExpression(ConditionalExpression object) {
+				return createConditionalExpressionAdapter();
+			}
+			@Override
+			public Adapter caseEventBrokerDataMart(EventBrokerDataMart object) {
+				return createEventBrokerDataMartAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerData(PropertyFillerData object) {
+				return createPropertyFillerDataAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerType(PropertyFillerType object) {
+				return createPropertyFillerTypeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerDateType(PropertyFillerDateType object) {
+				return createPropertyFillerDateTypeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerDoubleType(PropertyFillerDoubleType object) {
+				return createPropertyFillerDoubleTypeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerIntegerType(PropertyFillerIntegerType object) {
+				return createPropertyFillerIntegerTypeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerTextType(PropertyFillerTextType object) {
+				return createPropertyFillerTextTypeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerDateFuture(PropertyFillerDateFuture object) {
+				return createPropertyFillerDateFutureAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerDatePast(PropertyFillerDatePast object) {
+				return createPropertyFillerDatePastAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerDateRange(PropertyFillerDateRange object) {
+				return createPropertyFillerDateRangeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerSignedDoubleRange(PropertyFillerSignedDoubleRange object) {
+				return createPropertyFillerSignedDoubleRangeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerSignedDoubleRandom(PropertyFillerSignedDoubleRandom object) {
+				return createPropertyFillerSignedDoubleRandomAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerSignedIntegerRange(PropertyFillerSignedIntegerRange object) {
+				return createPropertyFillerSignedIntegerRangeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerSignedIntegerRandom(PropertyFillerSignedIntegerRandom object) {
+				return createPropertyFillerSignedIntegerRandomAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerTextRandom(PropertyFillerTextRandom object) {
+				return createPropertyFillerTextRandomAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerTextParagraphs(PropertyFillerTextParagraphs object) {
+				return createPropertyFillerTextParagraphsAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerTextSentences(PropertyFillerTextSentences object) {
+				return createPropertyFillerTextSentencesAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerTextWords(PropertyFillerTextWords object) {
+				return createPropertyFillerTextWordsAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerUnsignedDoubleRange(PropertyFillerUnsignedDoubleRange object) {
+				return createPropertyFillerUnsignedDoubleRangeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerUnsignedDoubleRandom(PropertyFillerUnsignedDoubleRandom object) {
+				return createPropertyFillerUnsignedDoubleRandomAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerUnsignedIntegerRange(PropertyFillerUnsignedIntegerRange object) {
+				return createPropertyFillerUnsignedIntegerRangeAdapter();
+			}
+			@Override
+			public Adapter casePropertyFillerUnsignedIntegerRandom(PropertyFillerUnsignedIntegerRandom object) {
+				return createPropertyFillerUnsignedIntegerRandomAdapter();
+			}
+			@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.datamartdsl.DatamartModel <em>Datamart 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.datamartdsl.DatamartModel
+	 * @generated
+	 */
+	public Adapter createDatamartModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartLazyResolver <em>Datamart 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.datamartdsl.DatamartLazyResolver
+	 * @generated
+	 */
+	public Adapter createDatamartLazyResolverAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartBase <em>Datamart 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.datamartdsl.DatamartBase
+	 * @generated
+	 */
+	public Adapter createDatamartBaseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartPackage <em>Datamart 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.datamartdsl.DatamartPackage
+	 * @generated
+	 */
+	public Adapter createDatamartPackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition <em>Datamart Definition</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.datamartdsl.DatamartDefinition
+	 * @generated
+	 */
+	public Adapter createDatamartDefinitionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSource <em>Datamart Source</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.datamartdsl.DatamartSource
+	 * @generated
+	 */
+	public Adapter createDatamartSourceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartRole <em>Datamart Role</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.datamartdsl.DatamartRole
+	 * @generated
+	 */
+	public Adapter createDatamartRoleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTask <em>Datamart Task</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.datamartdsl.DatamartTask
+	 * @generated
+	 */
+	public Adapter createDatamartTaskAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCube <em>Datamart Cube</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.datamartdsl.DatamartCube
+	 * @generated
+	 */
+	public Adapter createDatamartCubeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartEntity <em>Datamart 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.datamartdsl.DatamartEntity
+	 * @generated
+	 */
+	public Adapter createDatamartEntityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartColumn <em>Datamart Column</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.datamartdsl.DatamartColumn
+	 * @generated
+	 */
+	public Adapter createDatamartColumnAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter <em>Datamart Task Filter</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.datamartdsl.DatamartTaskFilter
+	 * @generated
+	 */
+	public Adapter createDatamartTaskFilterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation <em>Datamart Navigation</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.datamartdsl.DatamartNavigation
+	 * @generated
+	 */
+	public Adapter createDatamartNavigationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOwner <em>Datamart Owner</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.datamartdsl.DatamartOwner
+	 * @generated
+	 */
+	public Adapter createDatamartOwnerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMember <em>Datamart Member</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.datamartdsl.DatamartMember
+	 * @generated
+	 */
+	public Adapter createDatamartMemberAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartProperty <em>Datamart Property</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.datamartdsl.DatamartProperty
+	 * @generated
+	 */
+	public Adapter createDatamartPropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Expression <em>Expression</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.datamartdsl.Expression
+	 * @generated
+	 */
+	public Adapter createExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCondition <em>Datamart Condition</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.datamartdsl.DatamartCondition
+	 * @generated
+	 */
+	public Adapter createDatamartConditionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartOrder <em>Datamart Order</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.datamartdsl.DatamartOrder
+	 * @generated
+	 */
+	public Adapter createDatamartOrderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement <em>Datamart Cube Element</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.datamartdsl.DatamartCubeElement
+	 * @generated
+	 */
+	public Adapter createDatamartCubeElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure <em>Datamart Define Derived 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.datamartdsl.DatamartDefineDerivedMeasure
+	 * @generated
+	 */
+	public Adapter createDatamartDefineDerivedMeasureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface <em>Datamart Function Interface</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.datamartdsl.DatamartFunctionInterface
+	 * @generated
+	 */
+	public Adapter createDatamartFunctionInterfaceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunction <em>Datamart Function</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.datamartdsl.DatamartFunction
+	 * @generated
+	 */
+	public Adapter createDatamartFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction <em>Datamart Parameter Function</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.datamartdsl.DatamartParameterFunction
+	 * @generated
+	 */
+	public Adapter createDatamartParameterFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter <em>Datamart Function Int Parameter</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.datamartdsl.DatamartFunctionIntParameter
+	 * @generated
+	 */
+	public Adapter createDatamartFunctionIntParameterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface <em>Datamart Set Function Interface</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.datamartdsl.DatamartSetFunctionInterface
+	 * @generated
+	 */
+	public Adapter createDatamartSetFunctionInterfaceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction <em>Datamart Set Function</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.datamartdsl.DatamartSetFunction
+	 * @generated
+	 */
+	public Adapter createDatamartSetFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction <em>Datamart Set Parameter Function</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.datamartdsl.DatamartSetParameterFunction
+	 * @generated
+	 */
+	public Adapter createDatamartSetParameterFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface <em>Datamart Aggregation Function Interface</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.datamartdsl.DatamartAggregationFunctionInterface
+	 * @generated
+	 */
+	public Adapter createDatamartAggregationFunctionInterfaceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction <em>Datamart Set Aggregation Function</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.datamartdsl.DatamartSetAggregationFunction
+	 * @generated
+	 */
+	public Adapter createDatamartSetAggregationFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationExpression <em>Datamart Aggregation Expression</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.datamartdsl.DatamartAggregationExpression
+	 * @generated
+	 */
+	public Adapter createDatamartAggregationExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple <em>Datamart Set Tuple</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.datamartdsl.DatamartSetTuple
+	 * @generated
+	 */
+	public Adapter createDatamartSetTupleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation <em>Datamart Set Aggregation</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.datamartdsl.DatamartSetAggregation
+	 * @generated
+	 */
+	public Adapter createDatamartSetAggregationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation <em>Datamart Aggregation</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.datamartdsl.DatamartAggregation
+	 * @generated
+	 */
+	public Adapter createDatamartAggregationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple <em>Datamart Member Tuple</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.datamartdsl.DatamartMemberTuple
+	 * @generated
+	 */
+	public Adapter createDatamartMemberTupleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction <em>Datamart Aggregation Function</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.datamartdsl.DatamartAggregationFunction
+	 * @generated
+	 */
+	public Adapter createDatamartAggregationFunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer <em>Datamart Slicer</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.datamartdsl.DatamartSlicer
+	 * @generated
+	 */
+	public Adapter createDatamartSlicerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartAxis <em>Datamart Axis</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.datamartdsl.DatamartAxis
+	 * @generated
+	 */
+	public Adapter createDatamartAxisAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartElement <em>Datamart Element</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.datamartdsl.DatamartElement
+	 * @generated
+	 */
+	public Adapter createDatamartElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure <em>Datamart Derived 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.datamartdsl.DatamartDerivedMeasure
+	 * @generated
+	 */
+	public Adapter createDatamartDerivedMeasureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure <em>Datamart 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.datamartdsl.DatamartMeasure
+	 * @generated
+	 */
+	public Adapter createDatamartMeasureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy <em>Datamart 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.datamartdsl.DatamartHierarchy
+	 * @generated
+	 */
+	public Adapter createDatamartHierarchyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Calculation <em>Calculation</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.datamartdsl.Calculation
+	 * @generated
+	 */
+	public Adapter createCalculationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.DatamartReference <em>Datamart Reference</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.datamartdsl.DatamartReference
+	 * @generated
+	 */
+	public Adapter createDatamartReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Addition <em>Addition</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.datamartdsl.Addition
+	 * @generated
+	 */
+	public Adapter createAdditionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Division <em>Division</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.datamartdsl.Division
+	 * @generated
+	 */
+	public Adapter createDivisionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Multiplication <em>Multiplication</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.datamartdsl.Multiplication
+	 * @generated
+	 */
+	public Adapter createMultiplicationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Subtraction <em>Subtraction</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.datamartdsl.Subtraction
+	 * @generated
+	 */
+	public Adapter createSubtractionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Conjunction <em>Conjunction</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.datamartdsl.Conjunction
+	 * @generated
+	 */
+	public Adapter createConjunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.Disjunction <em>Disjunction</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.datamartdsl.Disjunction
+	 * @generated
+	 */
+	public Adapter createDisjunctionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression <em>Conditional Expression</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.datamartdsl.ConditionalExpression
+	 * @generated
+	 */
+	public Adapter createConditionalExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart <em>Event Broker Data Mart</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.datamartdsl.EventBrokerDataMart
+	 * @generated
+	 */
+	public Adapter createEventBrokerDataMartAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData <em>Property Filler Data</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.datamartdsl.PropertyFillerData
+	 * @generated
+	 */
+	public Adapter createPropertyFillerDataAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType <em>Property Filler 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.datamartdsl.PropertyFillerType
+	 * @generated
+	 */
+	public Adapter createPropertyFillerTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType <em>Property Filler Date 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.datamartdsl.PropertyFillerDateType
+	 * @generated
+	 */
+	public Adapter createPropertyFillerDateTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType <em>Property Filler Double 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.datamartdsl.PropertyFillerDoubleType
+	 * @generated
+	 */
+	public Adapter createPropertyFillerDoubleTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType <em>Property Filler Integer 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.datamartdsl.PropertyFillerIntegerType
+	 * @generated
+	 */
+	public Adapter createPropertyFillerIntegerTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType <em>Property Filler Text 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.datamartdsl.PropertyFillerTextType
+	 * @generated
+	 */
+	public Adapter createPropertyFillerTextTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture <em>Property Filler Date Future</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.datamartdsl.PropertyFillerDateFuture
+	 * @generated
+	 */
+	public Adapter createPropertyFillerDateFutureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast <em>Property Filler Date Past</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.datamartdsl.PropertyFillerDatePast
+	 * @generated
+	 */
+	public Adapter createPropertyFillerDatePastAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange <em>Property Filler Date Range</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.datamartdsl.PropertyFillerDateRange
+	 * @generated
+	 */
+	public Adapter createPropertyFillerDateRangeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange <em>Property Filler Signed Double Range</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.datamartdsl.PropertyFillerSignedDoubleRange
+	 * @generated
+	 */
+	public Adapter createPropertyFillerSignedDoubleRangeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom <em>Property Filler Signed Double Random</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.datamartdsl.PropertyFillerSignedDoubleRandom
+	 * @generated
+	 */
+	public Adapter createPropertyFillerSignedDoubleRandomAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange <em>Property Filler Signed Integer Range</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.datamartdsl.PropertyFillerSignedIntegerRange
+	 * @generated
+	 */
+	public Adapter createPropertyFillerSignedIntegerRangeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom <em>Property Filler Signed Integer Random</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.datamartdsl.PropertyFillerSignedIntegerRandom
+	 * @generated
+	 */
+	public Adapter createPropertyFillerSignedIntegerRandomAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom <em>Property Filler Text Random</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.datamartdsl.PropertyFillerTextRandom
+	 * @generated
+	 */
+	public Adapter createPropertyFillerTextRandomAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs <em>Property Filler Text Paragraphs</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.datamartdsl.PropertyFillerTextParagraphs
+	 * @generated
+	 */
+	public Adapter createPropertyFillerTextParagraphsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences <em>Property Filler Text Sentences</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.datamartdsl.PropertyFillerTextSentences
+	 * @generated
+	 */
+	public Adapter createPropertyFillerTextSentencesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords <em>Property Filler Text Words</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.datamartdsl.PropertyFillerTextWords
+	 * @generated
+	 */
+	public Adapter createPropertyFillerTextWordsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange <em>Property Filler Unsigned Double Range</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.datamartdsl.PropertyFillerUnsignedDoubleRange
+	 * @generated
+	 */
+	public Adapter createPropertyFillerUnsignedDoubleRangeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom <em>Property Filler Unsigned Double Random</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.datamartdsl.PropertyFillerUnsignedDoubleRandom
+	 * @generated
+	 */
+	public Adapter createPropertyFillerUnsignedDoubleRandomAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange <em>Property Filler Unsigned Integer Range</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.datamartdsl.PropertyFillerUnsignedIntegerRange
+	 * @generated
+	 */
+	public Adapter createPropertyFillerUnsignedIntegerRangeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom <em>Property Filler Unsigned Integer Random</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.datamartdsl.PropertyFillerUnsignedIntegerRandom
+	 * @generated
+	 */
+	public Adapter createPropertyFillerUnsignedIntegerRandomAdapter() {
+		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;
+	}
+
+} //DatamartDSLAdapterFactory
diff --git a/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/util/DatamartDSLSwitch.java b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/util/DatamartDSLSwitch.java
new file mode 100644
index 0000000..59530db
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/emf-gen/org/eclipse/osbp/xtext/datamartdsl/util/DatamartDSLSwitch.java
@@ -0,0 +1,1822 @@
+/**
+ * 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:  
+ *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.*;
+
+/**
+ * <!-- 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.datamartdsl.DatamartDSLPackage
+ * @generated
+ */
+public class DatamartDSLSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static DatamartDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatamartDSLSwitch() {
+		if (modelPackage == null) {
+			modelPackage = DatamartDSLPackage.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 DatamartDSLPackage.DATAMART_MODEL: {
+				DatamartModel datamartModel = (DatamartModel)theEObject;
+				T result = caseDatamartModel(datamartModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_LAZY_RESOLVER: {
+				DatamartLazyResolver datamartLazyResolver = (DatamartLazyResolver)theEObject;
+				T result = caseDatamartLazyResolver(datamartLazyResolver);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_BASE: {
+				DatamartBase datamartBase = (DatamartBase)theEObject;
+				T result = caseDatamartBase(datamartBase);
+				if (result == null) result = caseDatamartLazyResolver(datamartBase);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_PACKAGE: {
+				DatamartPackage datamartPackage = (DatamartPackage)theEObject;
+				T result = caseDatamartPackage(datamartPackage);
+				if (result == null) result = caseLPackage(datamartPackage);
+				if (result == null) result = caseLLazyResolver(datamartPackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_DEFINITION: {
+				DatamartDefinition datamartDefinition = (DatamartDefinition)theEObject;
+				T result = caseDatamartDefinition(datamartDefinition);
+				if (result == null) result = caseDatamartBase(datamartDefinition);
+				if (result == null) result = caseDatamartLazyResolver(datamartDefinition);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SOURCE: {
+				DatamartSource datamartSource = (DatamartSource)theEObject;
+				T result = caseDatamartSource(datamartSource);
+				if (result == null) result = caseDatamartLazyResolver(datamartSource);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_ROLE: {
+				DatamartRole datamartRole = (DatamartRole)theEObject;
+				T result = caseDatamartRole(datamartRole);
+				if (result == null) result = caseDatamartLazyResolver(datamartRole);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_TASK: {
+				DatamartTask datamartTask = (DatamartTask)theEObject;
+				T result = caseDatamartTask(datamartTask);
+				if (result == null) result = caseDatamartSource(datamartTask);
+				if (result == null) result = caseDatamartLazyResolver(datamartTask);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_CUBE: {
+				DatamartCube datamartCube = (DatamartCube)theEObject;
+				T result = caseDatamartCube(datamartCube);
+				if (result == null) result = caseDatamartSource(datamartCube);
+				if (result == null) result = caseDatamartLazyResolver(datamartCube);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_ENTITY: {
+				DatamartEntity datamartEntity = (DatamartEntity)theEObject;
+				T result = caseDatamartEntity(datamartEntity);
+				if (result == null) result = caseDatamartSource(datamartEntity);
+				if (result == null) result = caseDatamartLazyResolver(datamartEntity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_COLUMN: {
+				DatamartColumn datamartColumn = (DatamartColumn)theEObject;
+				T result = caseDatamartColumn(datamartColumn);
+				if (result == null) result = caseExpression(datamartColumn);
+				if (result == null) result = caseDatamartElement(datamartColumn);
+				if (result == null) result = caseDatamartLazyResolver(datamartColumn);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_TASK_FILTER: {
+				DatamartTaskFilter datamartTaskFilter = (DatamartTaskFilter)theEObject;
+				T result = caseDatamartTaskFilter(datamartTaskFilter);
+				if (result == null) result = caseExpression(datamartTaskFilter);
+				if (result == null) result = caseDatamartElement(datamartTaskFilter);
+				if (result == null) result = caseDatamartLazyResolver(datamartTaskFilter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_NAVIGATION: {
+				DatamartNavigation datamartNavigation = (DatamartNavigation)theEObject;
+				T result = caseDatamartNavigation(datamartNavigation);
+				if (result == null) result = caseDatamartLazyResolver(datamartNavigation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_OWNER: {
+				DatamartOwner datamartOwner = (DatamartOwner)theEObject;
+				T result = caseDatamartOwner(datamartOwner);
+				if (result == null) result = caseDatamartNavigation(datamartOwner);
+				if (result == null) result = caseDatamartLazyResolver(datamartOwner);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_MEMBER: {
+				DatamartMember datamartMember = (DatamartMember)theEObject;
+				T result = caseDatamartMember(datamartMember);
+				if (result == null) result = caseDatamartNavigation(datamartMember);
+				if (result == null) result = caseDatamartLazyResolver(datamartMember);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_PROPERTY: {
+				DatamartProperty datamartProperty = (DatamartProperty)theEObject;
+				T result = caseDatamartProperty(datamartProperty);
+				if (result == null) result = caseExpression(datamartProperty);
+				if (result == null) result = caseDatamartElement(datamartProperty);
+				if (result == null) result = caseDatamartLazyResolver(datamartProperty);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.EXPRESSION: {
+				Expression expression = (Expression)theEObject;
+				T result = caseExpression(expression);
+				if (result == null) result = caseDatamartElement(expression);
+				if (result == null) result = caseDatamartLazyResolver(expression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_CONDITION: {
+				DatamartCondition datamartCondition = (DatamartCondition)theEObject;
+				T result = caseDatamartCondition(datamartCondition);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_ORDER: {
+				DatamartOrder datamartOrder = (DatamartOrder)theEObject;
+				T result = caseDatamartOrder(datamartOrder);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_CUBE_ELEMENT: {
+				DatamartCubeElement datamartCubeElement = (DatamartCubeElement)theEObject;
+				T result = caseDatamartCubeElement(datamartCubeElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE: {
+				DatamartDefineDerivedMeasure datamartDefineDerivedMeasure = (DatamartDefineDerivedMeasure)theEObject;
+				T result = caseDatamartDefineDerivedMeasure(datamartDefineDerivedMeasure);
+				if (result == null) result = caseDatamartCubeElement(datamartDefineDerivedMeasure);
+				if (result == null) result = caseDatamartBase(datamartDefineDerivedMeasure);
+				if (result == null) result = caseDatamartLazyResolver(datamartDefineDerivedMeasure);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_FUNCTION_INTERFACE: {
+				DatamartFunctionInterface datamartFunctionInterface = (DatamartFunctionInterface)theEObject;
+				T result = caseDatamartFunctionInterface(datamartFunctionInterface);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_FUNCTION: {
+				DatamartFunction datamartFunction = (DatamartFunction)theEObject;
+				T result = caseDatamartFunction(datamartFunction);
+				if (result == null) result = caseDatamartFunctionInterface(datamartFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION: {
+				DatamartParameterFunction datamartParameterFunction = (DatamartParameterFunction)theEObject;
+				T result = caseDatamartParameterFunction(datamartParameterFunction);
+				if (result == null) result = caseDatamartFunctionInterface(datamartParameterFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER: {
+				DatamartFunctionIntParameter datamartFunctionIntParameter = (DatamartFunctionIntParameter)theEObject;
+				T result = caseDatamartFunctionIntParameter(datamartFunctionIntParameter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION_INTERFACE: {
+				DatamartSetFunctionInterface datamartSetFunctionInterface = (DatamartSetFunctionInterface)theEObject;
+				T result = caseDatamartSetFunctionInterface(datamartSetFunctionInterface);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION: {
+				DatamartSetFunction datamartSetFunction = (DatamartSetFunction)theEObject;
+				T result = caseDatamartSetFunction(datamartSetFunction);
+				if (result == null) result = caseDatamartSetFunctionInterface(datamartSetFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION: {
+				DatamartSetParameterFunction datamartSetParameterFunction = (DatamartSetParameterFunction)theEObject;
+				T result = caseDatamartSetParameterFunction(datamartSetParameterFunction);
+				if (result == null) result = caseDatamartSetFunctionInterface(datamartSetParameterFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION_INTERFACE: {
+				DatamartAggregationFunctionInterface datamartAggregationFunctionInterface = (DatamartAggregationFunctionInterface)theEObject;
+				T result = caseDatamartAggregationFunctionInterface(datamartAggregationFunctionInterface);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION: {
+				DatamartSetAggregationFunction datamartSetAggregationFunction = (DatamartSetAggregationFunction)theEObject;
+				T result = caseDatamartSetAggregationFunction(datamartSetAggregationFunction);
+				if (result == null) result = caseDatamartAggregationFunctionInterface(datamartSetAggregationFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_AGGREGATION_EXPRESSION: {
+				DatamartAggregationExpression datamartAggregationExpression = (DatamartAggregationExpression)theEObject;
+				T result = caseDatamartAggregationExpression(datamartAggregationExpression);
+				if (result == null) result = caseExpression(datamartAggregationExpression);
+				if (result == null) result = caseDatamartElement(datamartAggregationExpression);
+				if (result == null) result = caseDatamartLazyResolver(datamartAggregationExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SET_TUPLE: {
+				DatamartSetTuple datamartSetTuple = (DatamartSetTuple)theEObject;
+				T result = caseDatamartSetTuple(datamartSetTuple);
+				if (result == null) result = caseExpression(datamartSetTuple);
+				if (result == null) result = caseDatamartElement(datamartSetTuple);
+				if (result == null) result = caseDatamartLazyResolver(datamartSetTuple);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION: {
+				DatamartSetAggregation datamartSetAggregation = (DatamartSetAggregation)theEObject;
+				T result = caseDatamartSetAggregation(datamartSetAggregation);
+				if (result == null) result = caseDatamartAggregationExpression(datamartSetAggregation);
+				if (result == null) result = caseExpression(datamartSetAggregation);
+				if (result == null) result = caseDatamartElement(datamartSetAggregation);
+				if (result == null) result = caseDatamartLazyResolver(datamartSetAggregation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_AGGREGATION: {
+				DatamartAggregation datamartAggregation = (DatamartAggregation)theEObject;
+				T result = caseDatamartAggregation(datamartAggregation);
+				if (result == null) result = caseDatamartAggregationExpression(datamartAggregation);
+				if (result == null) result = caseExpression(datamartAggregation);
+				if (result == null) result = caseDatamartElement(datamartAggregation);
+				if (result == null) result = caseDatamartLazyResolver(datamartAggregation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_MEMBER_TUPLE: {
+				DatamartMemberTuple datamartMemberTuple = (DatamartMemberTuple)theEObject;
+				T result = caseDatamartMemberTuple(datamartMemberTuple);
+				if (result == null) result = caseDatamartAggregationExpression(datamartMemberTuple);
+				if (result == null) result = caseExpression(datamartMemberTuple);
+				if (result == null) result = caseDatamartElement(datamartMemberTuple);
+				if (result == null) result = caseDatamartLazyResolver(datamartMemberTuple);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION: {
+				DatamartAggregationFunction datamartAggregationFunction = (DatamartAggregationFunction)theEObject;
+				T result = caseDatamartAggregationFunction(datamartAggregationFunction);
+				if (result == null) result = caseDatamartAggregationFunctionInterface(datamartAggregationFunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_SLICER: {
+				DatamartSlicer datamartSlicer = (DatamartSlicer)theEObject;
+				T result = caseDatamartSlicer(datamartSlicer);
+				if (result == null) result = caseDatamartCubeElement(datamartSlicer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_AXIS: {
+				DatamartAxis datamartAxis = (DatamartAxis)theEObject;
+				T result = caseDatamartAxis(datamartAxis);
+				if (result == null) result = caseDatamartCubeElement(datamartAxis);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_ELEMENT: {
+				DatamartElement datamartElement = (DatamartElement)theEObject;
+				T result = caseDatamartElement(datamartElement);
+				if (result == null) result = caseDatamartLazyResolver(datamartElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE: {
+				DatamartDerivedMeasure datamartDerivedMeasure = (DatamartDerivedMeasure)theEObject;
+				T result = caseDatamartDerivedMeasure(datamartDerivedMeasure);
+				if (result == null) result = caseExpression(datamartDerivedMeasure);
+				if (result == null) result = caseDatamartElement(datamartDerivedMeasure);
+				if (result == null) result = caseDatamartLazyResolver(datamartDerivedMeasure);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_MEASURE: {
+				DatamartMeasure datamartMeasure = (DatamartMeasure)theEObject;
+				T result = caseDatamartMeasure(datamartMeasure);
+				if (result == null) result = caseExpression(datamartMeasure);
+				if (result == null) result = caseDatamartElement(datamartMeasure);
+				if (result == null) result = caseDatamartLazyResolver(datamartMeasure);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_HIERARCHY: {
+				DatamartHierarchy datamartHierarchy = (DatamartHierarchy)theEObject;
+				T result = caseDatamartHierarchy(datamartHierarchy);
+				if (result == null) result = caseExpression(datamartHierarchy);
+				if (result == null) result = caseDatamartElement(datamartHierarchy);
+				if (result == null) result = caseDatamartLazyResolver(datamartHierarchy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.CALCULATION: {
+				Calculation calculation = (Calculation)theEObject;
+				T result = caseCalculation(calculation);
+				if (result == null) result = caseExpression(calculation);
+				if (result == null) result = caseDatamartElement(calculation);
+				if (result == null) result = caseDatamartLazyResolver(calculation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DATAMART_REFERENCE: {
+				DatamartReference datamartReference = (DatamartReference)theEObject;
+				T result = caseDatamartReference(datamartReference);
+				if (result == null) result = caseDatamartLazyResolver(datamartReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.ADDITION: {
+				Addition addition = (Addition)theEObject;
+				T result = caseAddition(addition);
+				if (result == null) result = caseCalculation(addition);
+				if (result == null) result = caseExpression(addition);
+				if (result == null) result = caseDatamartElement(addition);
+				if (result == null) result = caseDatamartLazyResolver(addition);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DIVISION: {
+				Division division = (Division)theEObject;
+				T result = caseDivision(division);
+				if (result == null) result = caseCalculation(division);
+				if (result == null) result = caseExpression(division);
+				if (result == null) result = caseDatamartElement(division);
+				if (result == null) result = caseDatamartLazyResolver(division);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.MULTIPLICATION: {
+				Multiplication multiplication = (Multiplication)theEObject;
+				T result = caseMultiplication(multiplication);
+				if (result == null) result = caseCalculation(multiplication);
+				if (result == null) result = caseExpression(multiplication);
+				if (result == null) result = caseDatamartElement(multiplication);
+				if (result == null) result = caseDatamartLazyResolver(multiplication);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.SUBTRACTION: {
+				Subtraction subtraction = (Subtraction)theEObject;
+				T result = caseSubtraction(subtraction);
+				if (result == null) result = caseCalculation(subtraction);
+				if (result == null) result = caseExpression(subtraction);
+				if (result == null) result = caseDatamartElement(subtraction);
+				if (result == null) result = caseDatamartLazyResolver(subtraction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.CONJUNCTION: {
+				Conjunction conjunction = (Conjunction)theEObject;
+				T result = caseConjunction(conjunction);
+				if (result == null) result = caseCalculation(conjunction);
+				if (result == null) result = caseExpression(conjunction);
+				if (result == null) result = caseDatamartElement(conjunction);
+				if (result == null) result = caseDatamartLazyResolver(conjunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.DISJUNCTION: {
+				Disjunction disjunction = (Disjunction)theEObject;
+				T result = caseDisjunction(disjunction);
+				if (result == null) result = caseCalculation(disjunction);
+				if (result == null) result = caseExpression(disjunction);
+				if (result == null) result = caseDatamartElement(disjunction);
+				if (result == null) result = caseDatamartLazyResolver(disjunction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION: {
+				ConditionalExpression conditionalExpression = (ConditionalExpression)theEObject;
+				T result = caseConditionalExpression(conditionalExpression);
+				if (result == null) result = caseCalculation(conditionalExpression);
+				if (result == null) result = caseExpression(conditionalExpression);
+				if (result == null) result = caseDatamartElement(conditionalExpression);
+				if (result == null) result = caseDatamartLazyResolver(conditionalExpression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.EVENT_BROKER_DATA_MART: {
+				EventBrokerDataMart eventBrokerDataMart = (EventBrokerDataMart)theEObject;
+				T result = caseEventBrokerDataMart(eventBrokerDataMart);
+				if (result == null) result = caseDatamartLazyResolver(eventBrokerDataMart);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA: {
+				PropertyFillerData propertyFillerData = (PropertyFillerData)theEObject;
+				T result = casePropertyFillerData(propertyFillerData);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerData);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_TYPE: {
+				PropertyFillerType propertyFillerType = (PropertyFillerType)theEObject;
+				T result = casePropertyFillerType(propertyFillerType);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_TYPE: {
+				PropertyFillerDateType propertyFillerDateType = (PropertyFillerDateType)theEObject;
+				T result = casePropertyFillerDateType(propertyFillerDateType);
+				if (result == null) result = casePropertyFillerType(propertyFillerDateType);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerDateType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_DOUBLE_TYPE: {
+				PropertyFillerDoubleType propertyFillerDoubleType = (PropertyFillerDoubleType)theEObject;
+				T result = casePropertyFillerDoubleType(propertyFillerDoubleType);
+				if (result == null) result = casePropertyFillerType(propertyFillerDoubleType);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerDoubleType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_INTEGER_TYPE: {
+				PropertyFillerIntegerType propertyFillerIntegerType = (PropertyFillerIntegerType)theEObject;
+				T result = casePropertyFillerIntegerType(propertyFillerIntegerType);
+				if (result == null) result = casePropertyFillerType(propertyFillerIntegerType);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerIntegerType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_TYPE: {
+				PropertyFillerTextType propertyFillerTextType = (PropertyFillerTextType)theEObject;
+				T result = casePropertyFillerTextType(propertyFillerTextType);
+				if (result == null) result = casePropertyFillerType(propertyFillerTextType);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerTextType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE: {
+				PropertyFillerDateFuture propertyFillerDateFuture = (PropertyFillerDateFuture)theEObject;
+				T result = casePropertyFillerDateFuture(propertyFillerDateFuture);
+				if (result == null) result = casePropertyFillerDateType(propertyFillerDateFuture);
+				if (result == null) result = casePropertyFillerType(propertyFillerDateFuture);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerDateFuture);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST: {
+				PropertyFillerDatePast propertyFillerDatePast = (PropertyFillerDatePast)theEObject;
+				T result = casePropertyFillerDatePast(propertyFillerDatePast);
+				if (result == null) result = casePropertyFillerDateType(propertyFillerDatePast);
+				if (result == null) result = casePropertyFillerType(propertyFillerDatePast);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerDatePast);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE: {
+				PropertyFillerDateRange propertyFillerDateRange = (PropertyFillerDateRange)theEObject;
+				T result = casePropertyFillerDateRange(propertyFillerDateRange);
+				if (result == null) result = casePropertyFillerDateType(propertyFillerDateRange);
+				if (result == null) result = casePropertyFillerType(propertyFillerDateRange);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerDateRange);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE: {
+				PropertyFillerSignedDoubleRange propertyFillerSignedDoubleRange = (PropertyFillerSignedDoubleRange)theEObject;
+				T result = casePropertyFillerSignedDoubleRange(propertyFillerSignedDoubleRange);
+				if (result == null) result = casePropertyFillerDoubleType(propertyFillerSignedDoubleRange);
+				if (result == null) result = casePropertyFillerType(propertyFillerSignedDoubleRange);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerSignedDoubleRange);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM: {
+				PropertyFillerSignedDoubleRandom propertyFillerSignedDoubleRandom = (PropertyFillerSignedDoubleRandom)theEObject;
+				T result = casePropertyFillerSignedDoubleRandom(propertyFillerSignedDoubleRandom);
+				if (result == null) result = casePropertyFillerDoubleType(propertyFillerSignedDoubleRandom);
+				if (result == null) result = casePropertyFillerType(propertyFillerSignedDoubleRandom);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerSignedDoubleRandom);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE: {
+				PropertyFillerSignedIntegerRange propertyFillerSignedIntegerRange = (PropertyFillerSignedIntegerRange)theEObject;
+				T result = casePropertyFillerSignedIntegerRange(propertyFillerSignedIntegerRange);
+				if (result == null) result = casePropertyFillerIntegerType(propertyFillerSignedIntegerRange);
+				if (result == null) result = casePropertyFillerType(propertyFillerSignedIntegerRange);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerSignedIntegerRange);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM: {
+				PropertyFillerSignedIntegerRandom propertyFillerSignedIntegerRandom = (PropertyFillerSignedIntegerRandom)theEObject;
+				T result = casePropertyFillerSignedIntegerRandom(propertyFillerSignedIntegerRandom);
+				if (result == null) result = casePropertyFillerIntegerType(propertyFillerSignedIntegerRandom);
+				if (result == null) result = casePropertyFillerType(propertyFillerSignedIntegerRandom);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerSignedIntegerRandom);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM: {
+				PropertyFillerTextRandom propertyFillerTextRandom = (PropertyFillerTextRandom)theEObject;
+				T result = casePropertyFillerTextRandom(propertyFillerTextRandom);
+				if (result == null) result = casePropertyFillerTextType(propertyFillerTextRandom);
+				if (result == null) result = casePropertyFillerType(propertyFillerTextRandom);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerTextRandom);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS: {
+				PropertyFillerTextParagraphs propertyFillerTextParagraphs = (PropertyFillerTextParagraphs)theEObject;
+				T result = casePropertyFillerTextParagraphs(propertyFillerTextParagraphs);
+				if (result == null) result = casePropertyFillerTextType(propertyFillerTextParagraphs);
+				if (result == null) result = casePropertyFillerType(propertyFillerTextParagraphs);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerTextParagraphs);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES: {
+				PropertyFillerTextSentences propertyFillerTextSentences = (PropertyFillerTextSentences)theEObject;
+				T result = casePropertyFillerTextSentences(propertyFillerTextSentences);
+				if (result == null) result = casePropertyFillerTextType(propertyFillerTextSentences);
+				if (result == null) result = casePropertyFillerType(propertyFillerTextSentences);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerTextSentences);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS: {
+				PropertyFillerTextWords propertyFillerTextWords = (PropertyFillerTextWords)theEObject;
+				T result = casePropertyFillerTextWords(propertyFillerTextWords);
+				if (result == null) result = casePropertyFillerTextType(propertyFillerTextWords);
+				if (result == null) result = casePropertyFillerType(propertyFillerTextWords);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerTextWords);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE: {
+				PropertyFillerUnsignedDoubleRange propertyFillerUnsignedDoubleRange = (PropertyFillerUnsignedDoubleRange)theEObject;
+				T result = casePropertyFillerUnsignedDoubleRange(propertyFillerUnsignedDoubleRange);
+				if (result == null) result = casePropertyFillerDoubleType(propertyFillerUnsignedDoubleRange);
+				if (result == null) result = casePropertyFillerType(propertyFillerUnsignedDoubleRange);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerUnsignedDoubleRange);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM: {
+				PropertyFillerUnsignedDoubleRandom propertyFillerUnsignedDoubleRandom = (PropertyFillerUnsignedDoubleRandom)theEObject;
+				T result = casePropertyFillerUnsignedDoubleRandom(propertyFillerUnsignedDoubleRandom);
+				if (result == null) result = casePropertyFillerDoubleType(propertyFillerUnsignedDoubleRandom);
+				if (result == null) result = casePropertyFillerType(propertyFillerUnsignedDoubleRandom);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerUnsignedDoubleRandom);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE: {
+				PropertyFillerUnsignedIntegerRange propertyFillerUnsignedIntegerRange = (PropertyFillerUnsignedIntegerRange)theEObject;
+				T result = casePropertyFillerUnsignedIntegerRange(propertyFillerUnsignedIntegerRange);
+				if (result == null) result = casePropertyFillerIntegerType(propertyFillerUnsignedIntegerRange);
+				if (result == null) result = casePropertyFillerType(propertyFillerUnsignedIntegerRange);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerUnsignedIntegerRange);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM: {
+				PropertyFillerUnsignedIntegerRandom propertyFillerUnsignedIntegerRandom = (PropertyFillerUnsignedIntegerRandom)theEObject;
+				T result = casePropertyFillerUnsignedIntegerRandom(propertyFillerUnsignedIntegerRandom);
+				if (result == null) result = casePropertyFillerIntegerType(propertyFillerUnsignedIntegerRandom);
+				if (result == null) result = casePropertyFillerType(propertyFillerUnsignedIntegerRandom);
+				if (result == null) result = caseDatamartLazyResolver(propertyFillerUnsignedIntegerRandom);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartModel(DatamartModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Lazy Resolver</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartLazyResolver(DatamartLazyResolver object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Base</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartBase(DatamartBase object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Package</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartPackage(DatamartPackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Definition</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>Datamart Definition</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartDefinition(DatamartDefinition object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Source</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>Datamart Source</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSource(DatamartSource object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Role</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>Datamart Role</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartRole(DatamartRole object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Task</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>Datamart Task</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartTask(DatamartTask object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Cube</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>Datamart Cube</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartCube(DatamartCube object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Entity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartEntity(DatamartEntity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Column</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>Datamart Column</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartColumn(DatamartColumn object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Task Filter</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>Datamart Task Filter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartTaskFilter(DatamartTaskFilter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Navigation</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>Datamart Navigation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartNavigation(DatamartNavigation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Owner</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>Datamart Owner</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartOwner(DatamartOwner object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Member</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>Datamart Member</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartMember(DatamartMember object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Property</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>Datamart Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartProperty(DatamartProperty object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Expression</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>Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExpression(Expression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Condition</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>Datamart Condition</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartCondition(DatamartCondition object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Order</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>Datamart Order</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartOrder(DatamartOrder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Cube Element</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>Datamart Cube Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartCubeElement(DatamartCubeElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Define Derived 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>Datamart Define Derived Measure</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartDefineDerivedMeasure(DatamartDefineDerivedMeasure object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Function Interface</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>Datamart Function Interface</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartFunctionInterface(DatamartFunctionInterface object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Function</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>Datamart Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartFunction(DatamartFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Parameter Function</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>Datamart Parameter Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartParameterFunction(DatamartParameterFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Function Int Parameter</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>Datamart Function Int Parameter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartFunctionIntParameter(DatamartFunctionIntParameter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Set Function Interface</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>Datamart Set Function Interface</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSetFunctionInterface(DatamartSetFunctionInterface object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Set Function</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>Datamart Set Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSetFunction(DatamartSetFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Set Parameter Function</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>Datamart Set Parameter Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSetParameterFunction(DatamartSetParameterFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Aggregation Function Interface</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>Datamart Aggregation Function Interface</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartAggregationFunctionInterface(DatamartAggregationFunctionInterface object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Set Aggregation Function</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>Datamart Set Aggregation Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSetAggregationFunction(DatamartSetAggregationFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Aggregation Expression</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>Datamart Aggregation Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartAggregationExpression(DatamartAggregationExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Set Tuple</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>Datamart Set Tuple</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSetTuple(DatamartSetTuple object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Set Aggregation</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>Datamart Set Aggregation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSetAggregation(DatamartSetAggregation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Aggregation</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>Datamart Aggregation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartAggregation(DatamartAggregation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Member Tuple</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>Datamart Member Tuple</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartMemberTuple(DatamartMemberTuple object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Aggregation Function</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>Datamart Aggregation Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartAggregationFunction(DatamartAggregationFunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Slicer</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>Datamart Slicer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartSlicer(DatamartSlicer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Axis</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>Datamart Axis</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartAxis(DatamartAxis object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Element</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>Datamart Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartElement(DatamartElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Derived 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>Datamart Derived Measure</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartDerivedMeasure(DatamartDerivedMeasure object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Measure</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartMeasure(DatamartMeasure object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart 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>Datamart Hierarchy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartHierarchy(DatamartHierarchy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Calculation</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>Calculation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCalculation(Calculation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Datamart Reference</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>Datamart Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDatamartReference(DatamartReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Addition</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>Addition</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAddition(Addition object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Division</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>Division</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDivision(Division object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multiplication</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>Multiplication</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiplication(Multiplication object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Subtraction</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>Subtraction</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSubtraction(Subtraction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conjunction</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>Conjunction</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConjunction(Conjunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Disjunction</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>Disjunction</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDisjunction(Disjunction object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conditional Expression</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>Conditional Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConditionalExpression(ConditionalExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Event Broker Data Mart</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>Event Broker Data Mart</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEventBrokerDataMart(EventBrokerDataMart object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Data</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>Property Filler Data</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerData(PropertyFillerData object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler 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>Property Filler Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerType(PropertyFillerType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Date 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>Property Filler Date Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerDateType(PropertyFillerDateType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Double 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>Property Filler Double Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerDoubleType(PropertyFillerDoubleType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Integer 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>Property Filler Integer Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerIntegerType(PropertyFillerIntegerType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Text 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>Property Filler Text Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerTextType(PropertyFillerTextType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Date Future</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>Property Filler Date Future</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerDateFuture(PropertyFillerDateFuture object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Date Past</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>Property Filler Date Past</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerDatePast(PropertyFillerDatePast object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Date Range</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>Property Filler Date Range</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerDateRange(PropertyFillerDateRange object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Signed Double Range</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>Property Filler Signed Double Range</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerSignedDoubleRange(PropertyFillerSignedDoubleRange object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Signed Double Random</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>Property Filler Signed Double Random</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerSignedDoubleRandom(PropertyFillerSignedDoubleRandom object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Signed Integer Range</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>Property Filler Signed Integer Range</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerSignedIntegerRange(PropertyFillerSignedIntegerRange object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Signed Integer Random</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>Property Filler Signed Integer Random</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerSignedIntegerRandom(PropertyFillerSignedIntegerRandom object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Text Random</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>Property Filler Text Random</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerTextRandom(PropertyFillerTextRandom object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Text Paragraphs</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>Property Filler Text Paragraphs</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerTextParagraphs(PropertyFillerTextParagraphs object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Text Sentences</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>Property Filler Text Sentences</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerTextSentences(PropertyFillerTextSentences object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Text Words</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>Property Filler Text Words</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerTextWords(PropertyFillerTextWords object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Unsigned Double Range</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>Property Filler Unsigned Double Range</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerUnsignedDoubleRange(PropertyFillerUnsignedDoubleRange object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Unsigned Double Random</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>Property Filler Unsigned Double Random</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerUnsignedDoubleRandom(PropertyFillerUnsignedDoubleRandom object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Unsigned Integer Range</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>Property Filler Unsigned Integer Range</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerUnsignedIntegerRange(PropertyFillerUnsignedIntegerRange object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Filler Unsigned Integer Random</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>Property Filler Unsigned Integer Random</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyFillerUnsignedIntegerRandom(PropertyFillerUnsignedIntegerRandom 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;
+	}
+
+} //DatamartDSLSwitch
diff --git a/org.eclipse.osbp.xtext.datamartdsl/epl-v10.html b/org.eclipse.osbp.xtext.datamartdsl/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/license.html b/org.eclipse.osbp.xtext.datamartdsl/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/model/DatamartDSL.xcore b/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore
new file mode 100644
index 0000000..bee4a11
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore
@@ -0,0 +1,483 @@
+@GenModel(fileExtensions="datamart")
+@GenModel(modelName="DatamartDSL")
+@GenModel(prefix="DatamartDSL")
+@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:  
+ 		Joerg Riegel - Initial implementation 
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/xtext/datamartdsl/DatamartDSL")
+@Ecore(nsPrefix="datamartdsl")
+@Ecore(rootPackage="datamartdsl")
+package org.eclipse.osbp.xtext.datamartdsl
+
+import org.eclipse.osbp.xtext.authorizationdsl.Role
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure
+import org.eclipse.osbp.xtext.cubedsl.CubeType
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage
+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.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.InternalEObject
+
+class DatamartModel {
+	contains DatamartPackage[] packages
+}
+
+type InternalEObject wraps InternalEObject
+
+class DatamartLazyResolver { 
+	op EObject eResolveProxy(InternalEObject proxy) {
+		return EcoreUtil3.resolve(proxy, this.eResource().resourceSet);
+	}
+}
+
+class DatamartBase extends DatamartLazyResolver{
+	String name
+}
+
+class DatamartPackage extends LPackage{
+	contains DatamartDefinition[] definitions
+}
+
+class DatamartDefinition extends DatamartBase{
+	boolean description
+	String descriptionValue
+	contains DatamartSource source
+	contains DatamartRole[] roles
+}
+
+interface DatamartSource extends DatamartLazyResolver{}
+	
+class DatamartRole extends DatamartLazyResolver{
+	refers Role assignedRole
+}
+
+class DatamartTask extends DatamartSource{
+	TaskQueryTopicEnum taskQuery
+	contains DatamartColumn[] columns
+	contains DatamartCondition[] conditions
+}
+
+class DatamartCube extends DatamartSource{
+	boolean nonEmpty
+	refers CubeType cubeRef
+	contains DatamartCubeElement[] axisslicer
+}
+
+class DatamartEntity extends DatamartSource{
+	refers LEntity entityRef
+	contains DatamartNavigation[] navigations
+	contains DatamartProperty[] properties
+	contains DatamartCondition[] conditions
+	contains DatamartOrder[] ordering
+	int fillerMinCountRows
+	int fillerMaxCountRows
+	boolean tracking
+    contains PropertyFillerData[] fillerDatas
+}
+
+class DatamartColumn extends Expression, DatamartLazyResolver{
+	TaskQueryColumnEnum columnRef
+}
+	
+class DatamartTaskFilter extends Expression, DatamartLazyResolver{
+	TaskFilterEnum filterRef
+}
+		
+class DatamartNavigation extends DatamartLazyResolver{
+//	contains Ref joinRef
+	contains DatamartReference joinRef
+	contains DatamartEntity datamartEntity
+}
+	
+class DatamartOwner extends DatamartNavigation{}
+	
+class DatamartMember extends DatamartNavigation{}
+	
+class DatamartProperty extends DatamartLazyResolver, Expression{
+	boolean aggregated
+	boolean scaled
+	boolean placed
+	AxisEnum axis
+	SqlAggregationEnum aggregate
+	ValueScaleEnum scale
+	refers LEntityAttribute propertyRef
+}
+
+class Expression extends DatamartElement {
+	boolean filtered
+	boolean selected
+  	boolean optional
+  	String numberValue
+	String stringValue
+  	String value
+	contains DatamartHierarchy hierarchy
+	contains DatamartAggregationFunctionInterface aggregation
+	contains DatamartFunctionInterface function
+	contains Expression ^set
+	contains DatamartSetFunctionInterface setFunction
+} 
+
+
+class DatamartCondition{
+	contains Expression condition
+}
+
+class DatamartOrder{
+	refers LEntityAttribute orderBy
+	OrderEnum orderHow
+}
+
+interface DatamartCubeElement{}
+	
+class DatamartDefineDerivedMeasure extends DatamartCubeElement, DatamartBase{
+	contains Expression[] derivedElement
+}
+
+interface DatamartFunctionInterface{}
+
+class DatamartFunction extends DatamartFunctionInterface{
+	FunctionEnum function
+}
+
+class DatamartParameterFunction extends DatamartFunctionInterface{
+	ParameterFunctionEnum function
+	contains DatamartFunctionIntParameter parameter
+}
+	
+class DatamartFunctionIntParameter{
+	int value
+}
+	
+interface DatamartSetFunctionInterface{}
+
+class DatamartSetFunction extends DatamartSetFunctionInterface{
+	SetFunctionEnum setFunction
+}
+	
+class DatamartSetParameterFunction extends DatamartSetFunctionInterface{
+	SetParameterFunctionEnum setFunction
+	contains DatamartFunctionIntParameter parameter
+}
+
+interface DatamartAggregationFunctionInterface{}
+		
+class DatamartSetAggregationFunction extends DatamartAggregationFunctionInterface{
+	SetAggregationEnum aggregation
+	contains DatamartFunctionIntParameter parameter
+}
+
+class DatamartAggregationExpression extends Expression{
+	contains Expression left
+	contains DatamartMeasure right
+}	
+	
+class DatamartSetTuple extends Expression{
+	contains Expression left
+	contains DatamartHierarchy right
+}	
+	
+class DatamartSetAggregation extends DatamartAggregationExpression{}	
+	
+class DatamartAggregation extends DatamartAggregationExpression{}	
+	
+class DatamartMemberTuple extends DatamartAggregationExpression{
+}	
+	
+class DatamartAggregationFunction extends DatamartAggregationFunctionInterface{
+	AggregationEnum aggregation
+	contains DatamartFunctionIntParameter parameter
+}
+		
+class DatamartSlicer extends DatamartCubeElement{
+	contains DatamartElement element
+}
+
+class DatamartAxis extends DatamartCubeElement{
+	AxisEnum name
+	contains DatamartElement[] elements
+}
+
+interface DatamartElement extends DatamartLazyResolver{}
+
+class DatamartDerivedMeasure extends Expression, DatamartElement{
+	boolean scaled
+	ValueScaleEnum scale
+	refers DatamartDefineDerivedMeasure derivedRef
+}
+	
+class DatamartMeasure extends Expression, DatamartElement{
+	boolean scaled
+	ValueScaleEnum scale
+	refers CubeMeasure measureRef
+}
+
+class DatamartHierarchy extends Expression, DatamartElement{
+	boolean defaultMember
+	boolean allMember
+	boolean allLevels
+	boolean all
+	boolean except
+	boolean ordered
+	boolean descending
+	refers CubeHierarchy hierarchyRef
+	refers CubeLevel levelRef
+	refers CubeLevel exceptRef
+	contains DatamartElement orderRef
+}
+
+class Calculation extends Expression, DatamartLazyResolver{
+  contains Expression left
+  contains Expression right
+}
+
+class DatamartReference extends DatamartLazyResolver{
+	refers LEntityReference ref
+}
+//interface Ref extends DatamartLazyResolver{}
+//class DotExpression extends Ref{
+//	contains Ref ref
+//	refers LEntityReference tail
+//}
+// 
+//class EntityRef extends Ref{
+//	refers LEntity entity
+//}
+
+class Addition extends Calculation{}
+
+class Division extends Calculation{}
+
+class Multiplication extends Calculation{}
+
+class Subtraction extends Calculation{}
+
+class Conjunction extends Calculation{}
+
+class Disjunction extends Calculation{}
+
+class ConditionalExpression extends Calculation{
+	OperatorEnum operator
+}
+
+class EventBrokerDataMart extends DatamartLazyResolver{
+	String filter
+	refers DatamartDefinition datamartDef
+//	contains JvmTypeReference datamartDefJvm
+}
+
+enum AxisEnum{
+	DEFAULT as 'default' = -1
+	COLUMNS as 'columns' = 0
+	ROWS as 'rows' = 1
+	PAGES as 'pages' = 2
+	SECTIONS as 'sections' = 3
+	CHAPTERS as 'chapters' = 4
+	/* AXIS(<index>)*/
+}
+	 
+enum FunctionEnum{
+	PREVMEMBER as 'previous'
+	NEXTMEMBER as 'next'
+	FIRSTCHILD as 'first'
+	LASTCHILD as 'last'
+}
+	
+enum ParameterFunctionEnum{
+	LAG as 'lag'
+	LEAD as 'lead'
+}
+	 
+enum SetFunctionEnum{
+	YTD as 'year-to-date'
+	PERIODSTODATE as 'periods' 
+	/*  ALLMEMBERS as 'all'
+		ASCENDANTS as 'ascendants'*/
+}
+	
+enum SetParameterFunctionEnum{
+	TAIL as 'tail'
+	HEAD as 'head'
+}	
+	
+enum SetAggregationEnum{
+	TOPCOUNT as 'topcount'
+	TOPSUM as 'topsummation'
+	TOPPERCENT as 'toppercentage'
+	BOTTOMCOUNT as 'bottomcount'
+	BOTTOMSUM as 'bottomsummation'
+	BOTTOMPERCENT as 'bottompercentage'
+}
+
+enum AggregationEnum{
+	AVG as 'average'
+	SUM as 'summation'
+	AGGREGATE as 'aggregate'
+	STDDEV as 'deviation'
+}
+	
+enum OperatorEnum{
+	EQUALS as '='
+	LESS as '<'
+	GREATER as ">"
+	LESSEQUAL as '<='
+	GREATEREQUAL as '>='
+	LIKE as 'like'
+}
+
+enum SqlAggregationEnum{
+	AVG as 'average'
+	SUM as 'summation'
+	COUNT as 'count'
+}
+	
+enum ValueScaleEnum{
+	AXIS as 'group1'
+	AXIS2 as 'group2'
+	AXIS3 as 'group3'
+	AXIS4 as 'group4'
+	AXIS5 as 'group5'
+	AXIS6 as 'group6'
+	AXIS7 as 'group7'
+	AXIS8 as 'group8'
+	AXIS9 as 'group9'
+}
+	
+enum TaskQueryTopicEnum{
+	Q1 as 'BusinessAdministrator'
+	Q2 as 'PotentialOwner'
+	Q3 as 'Recipient'
+	Q4 as 'TaskInitiator'
+	Q5 as 'TaskStakeholder'
+	Q6 as 'ExcludedOwner'
+}
+
+enum TaskQueryColumnEnum{
+	P1 as 'Name'
+	P2 as 'Priority'
+	P3 as 'Status'
+	P4 as 'Subject'
+	P5 as 'Description'
+	P6 as 'ExpirationTime'
+	P7 as 'CreatedOn'
+	P8 as 'CreatedBy'
+	P9 as 'ActivationTime'
+	P10 as 'ActualOwner'
+	P11 as 'TaskId'
+	P12 as 'ProcessId'
+	P13 as 'ProcessInstanceId'
+	P14 as 'ProcessSessionId'
+}
+
+enum TaskFilterEnum{
+	F1 as 'Groups'
+	F2 as 'Users'
+}
+	
+enum OrderEnum{
+	ASC as 'ascending'
+	DESC as 'descending'
+}
+	
+class PropertyFillerData extends DatamartLazyResolver {
+	refers LEntityAttribute propertyRef
+	contains PropertyFillerType fillerType
+}
+
+class PropertyFillerType extends DatamartLazyResolver {}
+
+class PropertyFillerDateType extends PropertyFillerType {}
+class PropertyFillerDoubleType extends PropertyFillerType {}
+class PropertyFillerIntegerType extends PropertyFillerType {}
+class PropertyFillerTextType extends PropertyFillerType {}
+
+class PropertyFillerDateFuture extends PropertyFillerDateType {
+    int dateFutureYears
+}
+
+class PropertyFillerDatePast extends PropertyFillerDateType {
+    int datePastYears
+}
+
+class PropertyFillerDateRange extends PropertyFillerDateType {
+    int dateBeginYears
+    int dateEndYears
+}
+
+class PropertyFillerSignedDoubleRange extends PropertyFillerDoubleType {
+	int decimals
+    double beginRange
+    double endRange
+	refers LEntityAttribute beginRangeRef
+	refers LEntityAttribute endRangeRef
+    double rounded
+}
+
+class PropertyFillerSignedDoubleRandom extends PropertyFillerDoubleType {
+    double[] items
+}
+
+class PropertyFillerSignedIntegerRange extends PropertyFillerIntegerType {
+    int beginRange
+    int endRange
+	refers LEntityAttribute beginRangeRef
+	refers LEntityAttribute endRangeRef
+    int rounded
+}
+
+class PropertyFillerSignedIntegerRandom extends PropertyFillerIntegerType {
+    int[] items
+}
+
+class PropertyFillerTextRandom extends PropertyFillerTextType {
+    String[] items
+}
+
+class PropertyFillerTextParagraphs extends PropertyFillerTextType {
+    int count
+}
+
+class PropertyFillerTextSentences extends PropertyFillerTextType {
+    int count
+}
+
+class PropertyFillerTextWords extends PropertyFillerTextType {
+    int count
+}
+
+class PropertyFillerUnsignedDoubleRange extends PropertyFillerDoubleType {
+	int decimals
+    double beginRange
+    double endRange
+	refers LEntityAttribute beginRangeRef
+	refers LEntityAttribute endRangeRef
+    double rounded
+}
+
+class PropertyFillerUnsignedDoubleRandom extends PropertyFillerDoubleType {
+    double[] items
+}
+
+class PropertyFillerUnsignedIntegerRange extends PropertyFillerIntegerType {
+    int beginRange
+    int endRange
+	refers LEntityAttribute beginRangeRef
+	refers LEntityAttribute endRangeRef
+    int rounded
+}
+
+class PropertyFillerUnsignedIntegerRandom extends PropertyFillerIntegerType {
+    int[] items
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/notice.html b/org.eclipse.osbp.xtext.datamartdsl/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/plugin.properties b/org.eclipse.osbp.xtext.datamartdsl/plugin.properties
new file mode 100644
index 0000000..48b0330
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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 = DatamartDSL Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.datamartdsl/plugin.xml b/org.eclipse.osbp.xtext.datamartdsl/plugin.xml
new file mode 100644
index 0000000..d4cc558
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+<!--
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://osbp.eclipse.org/xtext/datamartdsl/DatamartDSL" 
+       class = "org.eclipse.osbp.xtext.datamartdsl.datamartDSL.DatamartDSLPackage"
+       genModel = "model/generated/DatamartDSL.genmodel" /> 
+	
+  </extension>
+-->
+
+
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated DatamartDSL -->
+      <package
+            uri="http://osbp.eclipse.org/xtext/datamartdsl/DatamartDSL"
+            class="org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage"
+            genModel="model/DatamartDSL.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.datamartdsl/pom.xml b/org.eclipse.osbp.xtext.datamartdsl/pom.xml
new file mode 100644
index 0000000..09f7f70
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl</groupId>
+		<artifactId>org.eclipse.osbp.xtext.datamartdsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.xtext.datamartdsl</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.datamartdsl/src-gen/README.txt b/org.eclipse.osbp.xtext.datamartdsl/src-gen/README.txt
new file mode 100644
index 0000000..bbbe557
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/AbstractDatamartDSLRuntimeModule.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/AbstractDatamartDSLRuntimeModule.java
new file mode 100644
index 0000000..8887853
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/AbstractDatamartDSLRuntimeModule.java
@@ -0,0 +1,352 @@
+/**
+ *                                                                            
+ *  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.datamartdsl;
+
+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.datamartdsl.DatamartDSLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractDatamartDSLRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/xtext/datamartdsl/DatamartDSL.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.xtext.datamartdsl.DatamartDSL");
+	}
+	
+	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("datamart");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.xtext.datamartdsl.serializer.DatamartDSLSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.xtext.datamartdsl.serializer.DatamartDSLSyntacticSequencer.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.datamartdsl.parser.antlr.DatamartDSLParser.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.datamartdsl.parser.antlr.DatamartDSLAntlrTokenFileProvider.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.datamartdsl.parser.antlr.internal.InternalDatamartDSLLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.xtext.datamartdsl.parser.antlr.internal.InternalDatamartDSLLexer> provideInternalDatamartDSLLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.datamartdsl.parser.antlr.internal.InternalDatamartDSLLexer.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.datamartdsl.parser.antlr.internal.InternalDatamartDSLLexer.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.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper> bindIUnorderedGroupHelper() {
+		return org.eclipse.xtext.parser.antlr.UnorderedGroupHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.datamartdsl.validation.DatamartDSLValidator> bindDatamartDSLValidator() {
+		return org.eclipse.osbp.xtext.datamartdsl.validation.DatamartDSLValidator.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.datamartdsl.formatting.DatamartDSLFormatter.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.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer.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.datamartdsl.services.DatamartDSLGrammarAccess.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLStandaloneSetupGenerated.java
new file mode 100644
index 0000000..4f8e7ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLStandaloneSetupGenerated.java
@@ -0,0 +1,52 @@
+/**
+ *                                                                            
+ *  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.datamartdsl;
+
+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 DatamartDSLStandaloneSetupGenerated 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.datamartdsl.DatamartDSLRuntimeModule());
+	}
+	
+	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("datamart", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("datamart", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/DatamartDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/DatamartDSLAntlrTokenFileProvider.java
new file mode 100644
index 0000000..d98565a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/DatamartDSLAntlrTokenFileProvider.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.datamartdsl.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class DatamartDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/DatamartDSLParser.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/DatamartDSLParser.java
new file mode 100644
index 0000000..51762ea
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/DatamartDSLParser.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.datamartdsl.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess;
+
+public class DatamartDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private DatamartDSLGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.xtext.datamartdsl.parser.antlr.internal.InternalDatamartDSLParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.xtext.datamartdsl.parser.antlr.internal.InternalDatamartDSLParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "DatamartModel";
+	}
+	
+	public DatamartDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DatamartDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g
new file mode 100644
index 0000000..c3deb4f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  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 InternalDatamartDSL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl.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.datamartdsl.services.DatamartDSLGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private DatamartDSLGrammarAccess grammarAccess;
+ 	
+    public InternalDatamartDSLParser(TokenStream input, DatamartDSLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "DatamartModel";	
+   	}
+   	
+   	@Override
+   	protected DatamartDSLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleDatamartModel
+entryRuleDatamartModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartModelRule()); }
+	 iv_ruleDatamartModel=ruleDatamartModel 
+	 { $current=$iv_ruleDatamartModel.current; } 
+	 EOF 
+;
+
+// Rule DatamartModel
+ruleDatamartModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartModelAccess().getPackagesDatamartPackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleDatamartPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"DatamartPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartPackage
+entryRuleDatamartPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartPackageRule()); }
+	 iv_ruleDatamartPackage=ruleDatamartPackage 
+	 { $current=$iv_ruleDatamartPackage.current; } 
+	 EOF 
+;
+
+// Rule DatamartPackage
+ruleDatamartPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDatamartPackageAccess().getDatamartPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartPackageAccess().getImportsDatamartImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleDatamartImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"DatamartImport");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartPackageAccess().getDefinitionsDatamartDefinitionParserRuleCall_3_2_0()); 
+	    }
+		lv_definitions_5_0=ruleDatamartDefinition		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"definitions",
+        		lv_definitions_5_0, 
+        		"DatamartDefinition");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDatamartPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartDefinition
+entryRuleDatamartDefinition returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartDefinitionRule()); }
+	 iv_ruleDatamartDefinition=ruleDatamartDefinition 
+	 { $current=$iv_ruleDatamartDefinition.current; } 
+	 EOF 
+;
+
+// Rule DatamartDefinition
+ruleDatamartDefinition returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datamart' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartDefinitionAccess().getDatamartKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getDatamartDefinitionAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartDefinitionRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)((
+(
+		lv_description_2_0=	'described by' 
+    {
+        newLeafNode(lv_description_2_0, grammarAccess.getDatamartDefinitionAccess().getDescriptionDescribedByKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartDefinitionRule());
+	        }
+       		setWithLastConsumed($current, "description", true, "described by");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDefinitionAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0()); 
+	    }
+		lv_descriptionValue_3_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDefinitionRule());
+	        }
+       		set(
+       			$current, 
+       			"descriptionValue",
+        		lv_descriptionValue_3_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_4='for' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDatamartDefinitionAccess().getForKeyword_3_0());
+    }
+	otherlv_5='{' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartDefinitionAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDefinitionAccess().getRolesDatamartRoleParserRuleCall_3_2_0()); 
+	    }
+		lv_roles_6_0=ruleDatamartRole		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDefinitionRule());
+	        }
+       		add(
+       			$current, 
+       			"roles",
+        		lv_roles_6_0, 
+        		"DatamartRole");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDatamartDefinitionAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?	otherlv_8='using' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDatamartDefinitionAccess().getUsingKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDefinitionAccess().getSourceDatamartSourceParserRuleCall_5_0()); 
+	    }
+		lv_source_9_0=ruleDatamartSource		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDefinitionRule());
+	        }
+       		set(
+       			$current, 
+       			"source",
+        		lv_source_9_0, 
+        		"DatamartSource");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartRole
+entryRuleDatamartRole returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartRoleRule()); }
+	 iv_ruleDatamartRole=ruleDatamartRole 
+	 { $current=$iv_ruleDatamartRole.current; } 
+	 EOF 
+;
+
+// Rule DatamartRole
+ruleDatamartRole returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='role' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartRoleAccess().getRoleKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartRoleRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartRoleAccess().getAssignedRoleRoleCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSource
+entryRuleDatamartSource returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSourceRule()); }
+	 iv_ruleDatamartSource=ruleDatamartSource 
+	 { $current=$iv_ruleDatamartSource.current; } 
+	 EOF 
+;
+
+// Rule DatamartSource
+ruleDatamartSource returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartSourceAccess().getDatamartCubeParserRuleCall_0()); 
+    }
+    this_DatamartCube_0=ruleDatamartCube
+    { 
+        $current = $this_DatamartCube_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartSourceAccess().getDatamartEntityParserRuleCall_1()); 
+    }
+    this_DatamartEntity_1=ruleDatamartEntity
+    { 
+        $current = $this_DatamartEntity_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartSourceAccess().getDatamartTaskParserRuleCall_2()); 
+    }
+    this_DatamartTask_2=ruleDatamartTask
+    { 
+        $current = $this_DatamartTask_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartTask
+entryRuleDatamartTask returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartTaskRule()); }
+	 iv_ruleDatamartTask=ruleDatamartTask 
+	 { $current=$iv_ruleDatamartTask.current; } 
+	 EOF 
+;
+
+// Rule DatamartTask
+ruleDatamartTask returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='task' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartTaskAccess().getTaskKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartTaskAccess().getTaskQueryTaskQueryTopicEnumEnumRuleCall_1_0()); 
+	    }
+		lv_taskQuery_1_0=ruleTaskQueryTopicEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartTaskRule());
+	        }
+       		set(
+       			$current, 
+       			"taskQuery",
+        		lv_taskQuery_1_0, 
+        		"TaskQueryTopicEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='columns' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartTaskAccess().getColumnsKeyword_2_0());
+    }
+	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartTaskAccess().getColumnsDatamartColumnParserRuleCall_2_2_0()); 
+	    }
+		lv_columns_4_0=ruleDatamartColumn		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartTaskRule());
+	        }
+       		add(
+       			$current, 
+       			"columns",
+        		lv_columns_4_0, 
+        		"DatamartColumn");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_2_3());
+    }
+)?(	otherlv_6='conditions' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDatamartTaskAccess().getConditionsKeyword_3_0());
+    }
+	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartTaskAccess().getConditionsDatamartConditionParserRuleCall_3_2_0()); 
+	    }
+		lv_conditions_8_0=ruleDatamartCondition		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartTaskRule());
+	        }
+       		add(
+       			$current, 
+       			"conditions",
+        		lv_conditions_8_0, 
+        		"DatamartCondition");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_9='}' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartColumn
+entryRuleDatamartColumn returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartColumnRule()); }
+	 iv_ruleDatamartColumn=ruleDatamartColumn 
+	 { $current=$iv_ruleDatamartColumn.current; } 
+	 EOF 
+;
+
+// Rule DatamartColumn
+ruleDatamartColumn returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='column' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartColumnAccess().getColumnKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartColumnAccess().getColumnRefTaskQueryColumnEnumEnumRuleCall_1_0()); 
+	    }
+		lv_columnRef_1_0=ruleTaskQueryColumnEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartColumnRule());
+	        }
+       		set(
+       			$current, 
+       			"columnRef",
+        		lv_columnRef_1_0, 
+        		"TaskQueryColumnEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartTaskFilter
+entryRuleDatamartTaskFilter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartTaskFilterRule()); }
+	 iv_ruleDatamartTaskFilter=ruleDatamartTaskFilter 
+	 { $current=$iv_ruleDatamartTaskFilter.current; } 
+	 EOF 
+;
+
+// Rule DatamartTaskFilter
+ruleDatamartTaskFilter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filter' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartTaskFilterAccess().getFilterKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartTaskFilterAccess().getFilterRefTaskFilterEnumEnumRuleCall_1_0()); 
+	    }
+		lv_filterRef_1_0=ruleTaskFilterEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartTaskFilterRule());
+	        }
+       		set(
+       			$current, 
+       			"filterRef",
+        		lv_filterRef_1_0, 
+        		"TaskFilterEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartCube
+entryRuleDatamartCube returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartCubeRule()); }
+	 iv_ruleDatamartCube=ruleDatamartCube 
+	 { $current=$iv_ruleDatamartCube.current; } 
+	 EOF 
+;
+
+// Rule DatamartCube
+ruleDatamartCube returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='cube' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartCubeAccess().getCubeKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartCubeRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartCubeAccess().getCubeRefCubeTypeCrossReference_1_0()); 
+	}
+
+)
+)(
+(
+		lv_nonEmpty_2_0=	'nonempty values' 
+    {
+        newLeafNode(lv_nonEmpty_2_0, grammarAccess.getDatamartCubeAccess().getNonEmptyNonemptyValuesKeyword_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartCubeRule());
+	        }
+       		setWithLastConsumed($current, "nonEmpty", true, "nonempty values");
+	    }
+
+)
+)?	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartCubeAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartCubeAccess().getAxisslicerDatamartCubeElementParserRuleCall_4_0()); 
+	    }
+		lv_axisslicer_4_0=ruleDatamartCubeElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartCubeRule());
+	        }
+       		add(
+       			$current, 
+       			"axisslicer",
+        		lv_axisslicer_4_0, 
+        		"DatamartCubeElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartCubeAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartReference
+entryRuleDatamartReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartReferenceRule()); }
+	 iv_ruleDatamartReference=ruleDatamartReference 
+	 { $current=$iv_ruleDatamartReference.current; } 
+	 EOF 
+;
+
+// Rule DatamartReference
+ruleDatamartReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='join' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartReferenceAccess().getJoinKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartReferenceRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartReferenceAccess().getRefLEntityReferenceCrossReference_1_0()); 
+	}
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartEntity
+entryRuleDatamartEntity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartEntityRule()); }
+	 iv_ruleDatamartEntity=ruleDatamartEntity 
+	 { $current=$iv_ruleDatamartEntity.current; } 
+	 EOF 
+;
+
+// Rule DatamartEntity
+ruleDatamartEntity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='entity' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartEntityAccess().getEntityKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartEntityRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartEntityAccess().getEntityRefLEntityCrossReference_1_0()); 
+	}
+
+)
+)(
+(
+		lv_tracking_2_0=	'tracking' 
+    {
+        newLeafNode(lv_tracking_2_0, grammarAccess.getDatamartEntityAccess().getTrackingTrackingKeyword_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartEntityRule());
+	        }
+       		setWithLastConsumed($current, "tracking", true, "tracking");
+	    }
+
+)
+)?	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_3());
+    }
+(	otherlv_4='navigation' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDatamartEntityAccess().getNavigationKeyword_4_0());
+    }
+	otherlv_5='{' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getNavigationsDatamartNavigationParserRuleCall_4_2_0()); 
+	    }
+		lv_navigations_6_0=ruleDatamartNavigation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"navigations",
+        		lv_navigations_6_0, 
+        		"DatamartNavigation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_4_3());
+    }
+)?(	otherlv_8='properties' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDatamartEntityAccess().getPropertiesKeyword_5_0());
+    }
+	otherlv_9='{' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getPropertiesDatamartPropertyParserRuleCall_5_2_0()); 
+	    }
+		lv_properties_10_0=ruleDatamartProperty		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_10_0, 
+        		"DatamartProperty");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_11='}' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_5_3());
+    }
+)?(	otherlv_12='conditions' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDatamartEntityAccess().getConditionsKeyword_6_0());
+    }
+	otherlv_13='{' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getConditionsDatamartConditionParserRuleCall_6_2_0()); 
+	    }
+		lv_conditions_14_0=ruleDatamartCondition		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"conditions",
+        		lv_conditions_14_0, 
+        		"DatamartCondition");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_15='}' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_6_3());
+    }
+)?(	otherlv_16='ordering' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDatamartEntityAccess().getOrderingKeyword_7_0());
+    }
+	otherlv_17='{' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getOrderingDatamartOrderParserRuleCall_7_2_0()); 
+	    }
+		lv_ordering_18_0=ruleDatamartOrder		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"ordering",
+        		lv_ordering_18_0, 
+        		"DatamartOrder");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_19='}' 
+    {
+    	newLeafNode(otherlv_19, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_7_3());
+    }
+)?(	otherlv_20='filler rows' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDatamartEntityAccess().getFillerRowsKeyword_8_0());
+    }
+(
+(
+		lv_fillerMinCountRows_21_0=RULE_INT
+		{
+			newLeafNode(lv_fillerMinCountRows_21_0, grammarAccess.getDatamartEntityAccess().getFillerMinCountRowsINTTerminalRuleCall_8_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartEntityRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fillerMinCountRows",
+        		lv_fillerMinCountRows_21_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_22='to' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getDatamartEntityAccess().getToKeyword_8_2());
+    }
+(
+(
+		lv_fillerMaxCountRows_23_0=RULE_INT
+		{
+			newLeafNode(lv_fillerMaxCountRows_23_0, grammarAccess.getDatamartEntityAccess().getFillerMaxCountRowsINTTerminalRuleCall_8_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartEntityRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fillerMaxCountRows",
+        		lv_fillerMaxCountRows_23_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_24='{' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_8_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getFillerDatasPropertyFillerDataParserRuleCall_8_5_0()); 
+	    }
+		lv_fillerDatas_25_0=rulePropertyFillerData		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"fillerDatas",
+        		lv_fillerDatas_25_0, 
+        		"PropertyFillerData");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_26='}' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_8_6());
+    }
+)?	otherlv_27='}' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_9());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartNavigation
+entryRuleDatamartNavigation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartNavigationRule()); }
+	 iv_ruleDatamartNavigation=ruleDatamartNavigation 
+	 { $current=$iv_ruleDatamartNavigation.current; } 
+	 EOF 
+;
+
+// Rule DatamartNavigation
+ruleDatamartNavigation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartNavigationAccess().getDatamartOwnerParserRuleCall_0()); 
+    }
+    this_DatamartOwner_0=ruleDatamartOwner
+    { 
+        $current = $this_DatamartOwner_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartNavigationAccess().getDatamartMemberParserRuleCall_1()); 
+    }
+    this_DatamartMember_1=ruleDatamartMember
+    { 
+        $current = $this_DatamartMember_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartOwner
+entryRuleDatamartOwner returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartOwnerRule()); }
+	 iv_ruleDatamartOwner=ruleDatamartOwner 
+	 { $current=$iv_ruleDatamartOwner.current; } 
+	 EOF 
+;
+
+// Rule DatamartOwner
+ruleDatamartOwner returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='many to one' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartOwnerAccess().getManyToOneKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartOwnerAccess().getJoinRefDatamartReferenceParserRuleCall_1_0()); 
+	    }
+		lv_joinRef_1_0=ruleDatamartReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartOwnerRule());
+	        }
+       		set(
+       			$current, 
+       			"joinRef",
+        		lv_joinRef_1_0, 
+        		"DatamartReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='to' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartOwnerAccess().getToKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartOwnerAccess().getDatamartEntityDatamartEntityParserRuleCall_3_0()); 
+	    }
+		lv_datamartEntity_3_0=ruleDatamartEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartOwnerRule());
+	        }
+       		set(
+       			$current, 
+       			"datamartEntity",
+        		lv_datamartEntity_3_0, 
+        		"DatamartEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartMember
+entryRuleDatamartMember returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartMemberRule()); }
+	 iv_ruleDatamartMember=ruleDatamartMember 
+	 { $current=$iv_ruleDatamartMember.current; } 
+	 EOF 
+;
+
+// Rule DatamartMember
+ruleDatamartMember returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='one to many' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartMemberAccess().getOneToManyKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMemberAccess().getJoinRefDatamartReferenceParserRuleCall_1_0()); 
+	    }
+		lv_joinRef_1_0=ruleDatamartReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMemberRule());
+	        }
+       		set(
+       			$current, 
+       			"joinRef",
+        		lv_joinRef_1_0, 
+        		"DatamartReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='to' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartMemberAccess().getToKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMemberAccess().getDatamartEntityDatamartEntityParserRuleCall_3_0()); 
+	    }
+		lv_datamartEntity_3_0=ruleDatamartEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMemberRule());
+	        }
+       		set(
+       			$current, 
+       			"datamartEntity",
+        		lv_datamartEntity_3_0, 
+        		"DatamartEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartProperty
+entryRuleDatamartProperty returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartPropertyRule()); }
+	 iv_ruleDatamartProperty=ruleDatamartProperty 
+	 { $current=$iv_ruleDatamartProperty.current; } 
+	 EOF 
+;
+
+// Rule DatamartProperty
+ruleDatamartProperty returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='property' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartPropertyAccess().getPropertyKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartPropertyRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartPropertyAccess().getPropertyRefLEntityAttributeCrossReference_1_0()); 
+	}
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>((
+(
+		lv_aggregated_3_0=	'aggregate' 
+    {
+        newLeafNode(lv_aggregated_3_0, grammarAccess.getDatamartPropertyAccess().getAggregatedAggregateKeyword_2_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartPropertyRule());
+	        }
+       		setWithLastConsumed($current, "aggregated", true, "aggregate");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartPropertyAccess().getAggregateSqlAggregationEnumEnumRuleCall_2_0_1_0()); 
+	    }
+		lv_aggregate_4_0=ruleSqlAggregationEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartPropertyRule());
+	        }
+       		set(
+       			$current, 
+       			"aggregate",
+        		lv_aggregate_4_0, 
+        		"SqlAggregationEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_placed_5_0=	'on axis' 
+    {
+        newLeafNode(lv_placed_5_0, grammarAccess.getDatamartPropertyAccess().getPlacedOnAxisKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartPropertyRule());
+	        }
+       		setWithLastConsumed($current, "placed", true, "on axis");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartPropertyAccess().getAxisAxisEnumEnumRuleCall_2_1_1_0()); 
+	    }
+		lv_axis_6_0=ruleAxisEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartPropertyRule());
+	        }
+       		set(
+       			$current, 
+       			"axis",
+        		lv_axis_6_0, 
+        		"AxisEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((
+(
+		lv_scaled_7_0=	'scale' 
+    {
+        newLeafNode(lv_scaled_7_0, grammarAccess.getDatamartPropertyAccess().getScaledScaleKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartPropertyRule());
+	        }
+       		setWithLastConsumed($current, "scaled", true, "scale");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartPropertyAccess().getScaleValueScaleEnumEnumRuleCall_2_2_1_0()); 
+	    }
+		lv_scale_8_0=ruleValueScaleEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartPropertyRule());
+	        }
+       		set(
+       			$current, 
+       			"scale",
+        		lv_scale_8_0, 
+        		"ValueScaleEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+	}
+
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartCondition
+entryRuleDatamartCondition returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartConditionRule()); }
+	 iv_ruleDatamartCondition=ruleDatamartCondition 
+	 { $current=$iv_ruleDatamartCondition.current; } 
+	 EOF 
+;
+
+// Rule DatamartCondition
+ruleDatamartCondition returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='condition' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartConditionAccess().getConditionKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartConditionAccess().getConditionDatamartDisjunctionParserRuleCall_1_0()); 
+	    }
+		lv_condition_1_0=ruleDatamartDisjunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartConditionRule());
+	        }
+       		set(
+       			$current, 
+       			"condition",
+        		lv_condition_1_0, 
+        		"DatamartDisjunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartOrder
+entryRuleDatamartOrder returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartOrderRule()); }
+	 iv_ruleDatamartOrder=ruleDatamartOrder 
+	 { $current=$iv_ruleDatamartOrder.current; } 
+	 EOF 
+;
+
+// Rule DatamartOrder
+ruleDatamartOrder returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='order' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartOrderAccess().getOrderKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartOrderRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartOrderAccess().getOrderByLEntityAttributeCrossReference_1_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartOrderAccess().getOrderHowOrderEnumEnumRuleCall_2_0()); 
+	    }
+		lv_orderHow_2_0=ruleOrderEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartOrderRule());
+	        }
+       		set(
+       			$current, 
+       			"orderHow",
+        		lv_orderHow_2_0, 
+        		"OrderEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartDisjunction
+entryRuleDatamartDisjunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartDisjunctionRule()); }
+	 iv_ruleDatamartDisjunction=ruleDatamartDisjunction 
+	 { $current=$iv_ruleDatamartDisjunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartDisjunction
+ruleDatamartDisjunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartDisjunctionAccess().getDatamartConjunctionParserRuleCall_0()); 
+    }
+    this_DatamartConjunction_0=ruleDatamartConjunction
+    { 
+        $current = $this_DatamartConjunction_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0(),
+            $current);
+    }
+)	otherlv_2='or' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartDisjunctionAccess().getOrKeyword_1_0_1());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDisjunctionAccess().getRightDatamartConjunctionParserRuleCall_1_1_0()); 
+	    }
+		lv_right_3_0=ruleDatamartConjunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDisjunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_3_0, 
+        		"DatamartConjunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartConjunction
+entryRuleDatamartConjunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartConjunctionRule()); }
+	 iv_ruleDatamartConjunction=ruleDatamartConjunction 
+	 { $current=$iv_ruleDatamartConjunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartConjunction
+ruleDatamartConjunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartConjunctionAccess().getDatamartConditionalExpressionParserRuleCall_0()); 
+    }
+    this_DatamartConditionalExpression_0=ruleDatamartConditionalExpression
+    { 
+        $current = $this_DatamartConditionalExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0(),
+            $current);
+    }
+)	otherlv_2='and' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartConjunctionAccess().getAndKeyword_1_0_1());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartConjunctionAccess().getRightDatamartConditionalExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_right_3_0=ruleDatamartConditionalExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartConjunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_3_0, 
+        		"DatamartConditionalExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartConditionalExpression
+entryRuleDatamartConditionalExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartConditionalExpressionRule()); }
+	 iv_ruleDatamartConditionalExpression=ruleDatamartConditionalExpression 
+	 { $current=$iv_ruleDatamartConditionalExpression.current; } 
+	 EOF 
+;
+
+// Rule DatamartConditionalExpression
+ruleDatamartConditionalExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartConditionalExpressionAccess().getDatamartOperandParserRuleCall_0()); 
+    }
+    this_DatamartOperand_0=ruleDatamartOperand
+    { 
+        $current = $this_DatamartOperand_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartConditionalExpressionAccess().getOperatorOperatorEnumEnumRuleCall_1_0_1_0()); 
+	    }
+		lv_operator_2_0=ruleOperatorEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartConditionalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"operator",
+        		lv_operator_2_0, 
+        		"OperatorEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartConditionalExpressionAccess().getRightDatamartOperandParserRuleCall_1_1_0()); 
+	    }
+		lv_right_3_0=ruleDatamartOperand		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartConditionalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_3_0, 
+        		"DatamartOperand");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartOperand
+entryRuleDatamartOperand returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartOperandRule()); }
+	 iv_ruleDatamartOperand=ruleDatamartOperand 
+	 { $current=$iv_ruleDatamartOperand.current; } 
+	 EOF 
+;
+
+// Rule DatamartOperand
+ruleDatamartOperand returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartOperandAccess().getDatamartValueParserRuleCall_0()); 
+    }
+    this_DatamartValue_0=ruleDatamartValue
+    { 
+        $current = $this_DatamartValue_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartOperandAccess().getLeftParenthesisKeyword_1_0());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getDatamartOperandAccess().getDatamartDisjunctionParserRuleCall_1_1()); 
+    }
+    this_DatamartDisjunction_2=ruleDatamartDisjunction
+    { 
+        $current = $this_DatamartDisjunction_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartOperandAccess().getRightParenthesisKeyword_1_2());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartValue
+entryRuleDatamartValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartValueRule()); }
+	 iv_ruleDatamartValue=ruleDatamartValue 
+	 { $current=$iv_ruleDatamartValue.current; } 
+	 EOF 
+;
+
+// Rule DatamartValue
+ruleDatamartValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartValueAccess().getNumberValueNumberParserRuleCall_0_0()); 
+	    }
+		lv_numberValue_0_0=ruleNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartValueRule());
+	        }
+       		set(
+       			$current, 
+       			"numberValue",
+        		lv_numberValue_0_0, 
+        		"Number");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		lv_stringValue_1_0=RULE_STRING
+		{
+			newLeafNode(lv_stringValue_1_0, grammarAccess.getDatamartValueAccess().getStringValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"stringValue",
+        		lv_stringValue_1_0, 
+        		"STRING");
+	    }
+
+)
+)
+    |(((
+(
+		lv_filtered_2_0=	'filtered' 
+    {
+        newLeafNode(lv_filtered_2_0, grammarAccess.getDatamartValueAccess().getFilteredFilteredKeyword_2_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartValueRule());
+	        }
+       		setWithLastConsumed($current, "filtered", true, "filtered");
+	    }
+
+)
+)(
+(
+		lv_optional_3_0=	'optional' 
+    {
+        newLeafNode(lv_optional_3_0, grammarAccess.getDatamartValueAccess().getOptionalOptionalKeyword_2_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartValueRule());
+	        }
+       		setWithLastConsumed($current, "optional", true, "optional");
+	    }
+
+)
+)?)
+    |(
+(
+		lv_selected_4_0=	'selected' 
+    {
+        newLeafNode(lv_selected_4_0, grammarAccess.getDatamartValueAccess().getSelectedSelectedKeyword_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartValueRule());
+	        }
+       		setWithLastConsumed($current, "selected", true, "selected");
+	    }
+
+)
+))
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartValueAccess().getDatamartPropertyParserRuleCall_3()); 
+    }
+    this_DatamartProperty_5=ruleDatamartProperty
+    { 
+        $current = $this_DatamartProperty_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartValueAccess().getDatamartTaskFilterParserRuleCall_4()); 
+    }
+    this_DatamartTaskFilter_6=ruleDatamartTaskFilter
+    { 
+        $current = $this_DatamartTaskFilter_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartValueAccess().getDatamartColumnParserRuleCall_5()); 
+    }
+    this_DatamartColumn_7=ruleDatamartColumn
+    { 
+        $current = $this_DatamartColumn_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartCubeElement
+entryRuleDatamartCubeElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartCubeElementRule()); }
+	 iv_ruleDatamartCubeElement=ruleDatamartCubeElement 
+	 { $current=$iv_ruleDatamartCubeElement.current; } 
+	 EOF 
+;
+
+// Rule DatamartCubeElement
+ruleDatamartCubeElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartCubeElementAccess().getDatamartAxisParserRuleCall_0()); 
+    }
+    this_DatamartAxis_0=ruleDatamartAxis
+    { 
+        $current = $this_DatamartAxis_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartCubeElementAccess().getDatamartSlicerParserRuleCall_1()); 
+    }
+    this_DatamartSlicer_1=ruleDatamartSlicer
+    { 
+        $current = $this_DatamartSlicer_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartCubeElementAccess().getDatamartDefineDerivedMeasureParserRuleCall_2()); 
+    }
+    this_DatamartDefineDerivedMeasure_2=ruleDatamartDefineDerivedMeasure
+    { 
+        $current = $this_DatamartDefineDerivedMeasure_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartDefineDerivedMeasure
+entryRuleDatamartDefineDerivedMeasure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartDefineDerivedMeasureRule()); }
+	 iv_ruleDatamartDefineDerivedMeasure=ruleDatamartDefineDerivedMeasure 
+	 { $current=$iv_ruleDatamartDefineDerivedMeasure.current; } 
+	 EOF 
+;
+
+// Rule DatamartDefineDerivedMeasure
+ruleDatamartDefineDerivedMeasure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='derive' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartDefineDerivedMeasureAccess().getDeriveKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDefineDerivedMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDefineDerivedMeasureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='from' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartDefineDerivedMeasureAccess().getFromKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDefineDerivedMeasureAccess().getDerivedElementDatamartAdditionParserRuleCall_3_0()); 
+	    }
+		lv_derivedElement_3_0=ruleDatamartAddition		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDefineDerivedMeasureRule());
+	        }
+       		add(
+       			$current, 
+       			"derivedElement",
+        		lv_derivedElement_3_0, 
+        		"DatamartAddition");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartAddition
+entryRuleDatamartAddition returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartAdditionRule()); }
+	 iv_ruleDatamartAddition=ruleDatamartAddition 
+	 { $current=$iv_ruleDatamartAddition.current; } 
+	 EOF 
+;
+
+// Rule DatamartAddition
+ruleDatamartAddition returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartAdditionAccess().getDatamartMultiplicationParserRuleCall_0()); 
+    }
+    this_DatamartMultiplication_0=ruleDatamartMultiplication
+    { 
+        $current = $this_DatamartMultiplication_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0(),
+            $current);
+    }
+)	otherlv_2='+' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartAdditionAccess().getPlusSignKeyword_1_0_0_1());
+    }
+)
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0(),
+            $current);
+    }
+)	otherlv_4='-' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDatamartAdditionAccess().getHyphenMinusKeyword_1_0_1_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAdditionAccess().getRightDatamartMultiplicationParserRuleCall_1_1_0()); 
+	    }
+		lv_right_5_0=ruleDatamartMultiplication		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAdditionRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_5_0, 
+        		"DatamartMultiplication");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartMultiplication
+entryRuleDatamartMultiplication returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartMultiplicationRule()); }
+	 iv_ruleDatamartMultiplication=ruleDatamartMultiplication 
+	 { $current=$iv_ruleDatamartMultiplication.current; } 
+	 EOF 
+;
+
+// Rule DatamartMultiplication
+ruleDatamartMultiplication returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartMultiplicationAccess().getDatamartPrimaryParserRuleCall_0()); 
+    }
+    this_DatamartPrimary_0=ruleDatamartPrimary
+    { 
+        $current = $this_DatamartPrimary_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0(),
+            $current);
+    }
+)	otherlv_2='*' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartMultiplicationAccess().getAsteriskKeyword_1_0_0_1());
+    }
+)
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0(),
+            $current);
+    }
+)	otherlv_4='/' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDatamartMultiplicationAccess().getSolidusKeyword_1_0_1_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMultiplicationAccess().getRightDatamartPrimaryParserRuleCall_1_1_0()); 
+	    }
+		lv_right_5_0=ruleDatamartPrimary		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMultiplicationRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_5_0, 
+        		"DatamartPrimary");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartPrimary
+entryRuleDatamartPrimary returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartPrimaryRule()); }
+	 iv_ruleDatamartPrimary=ruleDatamartPrimary 
+	 { $current=$iv_ruleDatamartPrimary.current; } 
+	 EOF 
+;
+
+// Rule DatamartPrimary
+ruleDatamartPrimary returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartPrimaryAccess().getDatamartNumberOrElementParserRuleCall_0()); 
+    }
+    this_DatamartNumberOrElement_0=ruleDatamartNumberOrElement
+    { 
+        $current = $this_DatamartNumberOrElement_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |(	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartPrimaryAccess().getLeftParenthesisKeyword_1_0());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getDatamartPrimaryAccess().getDatamartAdditionParserRuleCall_1_1()); 
+    }
+    this_DatamartAddition_2=ruleDatamartAddition
+    { 
+        $current = $this_DatamartAddition_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartPrimaryAccess().getRightParenthesisKeyword_1_2());
+    }
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartNumberOrElement
+entryRuleDatamartNumberOrElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartNumberOrElementRule()); }
+	 iv_ruleDatamartNumberOrElement=ruleDatamartNumberOrElement 
+	 { $current=$iv_ruleDatamartNumberOrElement.current; } 
+	 EOF 
+;
+
+// Rule DatamartNumberOrElement
+ruleDatamartNumberOrElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getValueNumberParserRuleCall_0_0()); 
+	    }
+		lv_value_0_0=ruleNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartNumberOrElementRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_0_0, 
+        		"Number");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMeasureParserRuleCall_1()); 
+    }
+    this_DatamartMeasure_1=ruleDatamartMeasure
+    { 
+        $current = $this_DatamartMeasure_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); 
+    }
+    this_DatamartDerivedMeasure_2=ruleDatamartDerivedMeasure
+    { 
+        $current = $this_DatamartDerivedMeasure_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMemberTupleParserRuleCall_3()); 
+    }
+    this_DatamartMemberTuple_3=ruleDatamartMemberTuple
+    { 
+        $current = $this_DatamartMemberTuple_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartAggregationParserRuleCall_4()); 
+    }
+    this_DatamartAggregation_4=ruleDatamartAggregation
+    { 
+        $current = $this_DatamartAggregation_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartMemberTuple
+entryRuleDatamartMemberTuple returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartMemberTupleRule()); }
+	 iv_ruleDatamartMemberTuple=ruleDatamartMemberTuple 
+	 { $current=$iv_ruleDatamartMemberTuple.current; } 
+	 EOF 
+;
+
+// Rule DatamartMemberTuple
+ruleDatamartMemberTuple returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getFunctionDatamartFunctionParserRuleCall_0_0_0_0()); 
+	    }
+		lv_function_0_0=ruleDatamartFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"function",
+        		lv_function_0_0, 
+        		"DatamartFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getFunctionDatamartParameterFunctionParserRuleCall_0_0_1_0()); 
+	    }
+		lv_function_1_0=ruleDatamartParameterFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"function",
+        		lv_function_1_0, 
+        		"DatamartParameterFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))	otherlv_2='of' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartMemberTupleAccess().getOfKeyword_0_1());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getHierarchyDatamartHierarchyParserRuleCall_1_0()); 
+	    }
+		lv_hierarchy_3_0=ruleDatamartHierarchy		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"hierarchy",
+        		lv_hierarchy_3_0, 
+        		"DatamartHierarchy");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartMemberTupleAccess().getDatamartMemberTupleLeftAction_2_0(),
+            $current);
+    }
+)	otherlv_5='over' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartMemberTupleAccess().getOverKeyword_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getRightDatamartMeasureParserRuleCall_2_2_0()); 
+	    }
+		lv_right_6_0=ruleDatamartMeasure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_6_0, 
+        		"DatamartMeasure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartFunction
+entryRuleDatamartFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartFunctionRule()); }
+	 iv_ruleDatamartFunction=ruleDatamartFunction 
+	 { $current=$iv_ruleDatamartFunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartFunction
+ruleDatamartFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartFunctionAccess().getFunctionFunctionEnumEnumRuleCall_0()); 
+	    }
+		lv_function_0_0=ruleFunctionEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"function",
+        		lv_function_0_0, 
+        		"FunctionEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartParameterFunction
+entryRuleDatamartParameterFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartParameterFunctionRule()); }
+	 iv_ruleDatamartParameterFunction=ruleDatamartParameterFunction 
+	 { $current=$iv_ruleDatamartParameterFunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartParameterFunction
+ruleDatamartParameterFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartParameterFunctionAccess().getFunctionParameterFunctionEnumEnumRuleCall_0_0()); 
+	    }
+		lv_function_0_0=ruleParameterFunctionEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartParameterFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"function",
+        		lv_function_0_0, 
+        		"ParameterFunctionEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartParameterFunctionAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartParameterFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0()); 
+	    }
+		lv_parameter_2_0=ruleDatamartFunctionIntParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartParameterFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"parameter",
+        		lv_parameter_2_0, 
+        		"DatamartFunctionIntParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartParameterFunctionAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartFunctionIntParameter
+entryRuleDatamartFunctionIntParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartFunctionIntParameterRule()); }
+	 iv_ruleDatamartFunctionIntParameter=ruleDatamartFunctionIntParameter 
+	 { $current=$iv_ruleDatamartFunctionIntParameter.current; } 
+	 EOF 
+;
+
+// Rule DatamartFunctionIntParameter
+ruleDatamartFunctionIntParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		lv_value_0_0=RULE_INT
+		{
+			newLeafNode(lv_value_0_0, grammarAccess.getDatamartFunctionIntParameterAccess().getValueINTTerminalRuleCall_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartFunctionIntParameterRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_0_0, 
+        		"INT");
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSetFunction
+entryRuleDatamartSetFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSetFunctionRule()); }
+	 iv_ruleDatamartSetFunction=ruleDatamartSetFunction 
+	 { $current=$iv_ruleDatamartSetFunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartSetFunction
+ruleDatamartSetFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetFunctionAccess().getSetFunctionSetFunctionEnumEnumRuleCall_0()); 
+	    }
+		lv_setFunction_0_0=ruleSetFunctionEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"setFunction",
+        		lv_setFunction_0_0, 
+        		"SetFunctionEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSetParameterFunction
+entryRuleDatamartSetParameterFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSetParameterFunctionRule()); }
+	 iv_ruleDatamartSetParameterFunction=ruleDatamartSetParameterFunction 
+	 { $current=$iv_ruleDatamartSetParameterFunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartSetParameterFunction
+ruleDatamartSetParameterFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetParameterFunctionAccess().getSetFunctionSetParameterFunctionEnumEnumRuleCall_0_0()); 
+	    }
+		lv_setFunction_0_0=ruleSetParameterFunctionEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetParameterFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"setFunction",
+        		lv_setFunction_0_0, 
+        		"SetParameterFunctionEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartSetParameterFunctionAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetParameterFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0()); 
+	    }
+		lv_parameter_2_0=ruleDatamartFunctionIntParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetParameterFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"parameter",
+        		lv_parameter_2_0, 
+        		"DatamartFunctionIntParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartSetParameterFunctionAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSetAggregationFunction
+entryRuleDatamartSetAggregationFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSetAggregationFunctionRule()); }
+	 iv_ruleDatamartSetAggregationFunction=ruleDatamartSetAggregationFunction 
+	 { $current=$iv_ruleDatamartSetAggregationFunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartSetAggregationFunction
+ruleDatamartSetAggregationFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetAggregationFunctionAccess().getAggregationSetAggregationEnumEnumRuleCall_0_0()); 
+	    }
+		lv_aggregation_0_0=ruleSetAggregationEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetAggregationFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"aggregation",
+        		lv_aggregation_0_0, 
+        		"SetAggregationEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartSetAggregationFunctionAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetAggregationFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0()); 
+	    }
+		lv_parameter_2_0=ruleDatamartFunctionIntParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetAggregationFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"parameter",
+        		lv_parameter_2_0, 
+        		"DatamartFunctionIntParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartSetAggregationFunctionAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSetTuple
+entryRuleDatamartSetTuple returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSetTupleRule()); }
+	 iv_ruleDatamartSetTuple=ruleDatamartSetTuple 
+	 { $current=$iv_ruleDatamartSetTuple.current; } 
+	 EOF 
+;
+
+// Rule DatamartSetTuple
+ruleDatamartSetTuple returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetTupleAccess().getSetFunctionDatamartSetFunctionParserRuleCall_0_0_0()); 
+	    }
+		lv_setFunction_0_0=ruleDatamartSetFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"setFunction",
+        		lv_setFunction_0_0, 
+        		"DatamartSetFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetTupleAccess().getSetFunctionDatamartSetParameterFunctionParserRuleCall_0_1_0()); 
+	    }
+		lv_setFunction_1_0=ruleDatamartSetParameterFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"setFunction",
+        		lv_setFunction_1_0, 
+        		"DatamartSetParameterFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartSetTupleAccess().getDatamartSetTupleLeftAction_1_0(),
+            $current);
+    }
+)	otherlv_3='of' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDatamartSetTupleAccess().getOfKeyword_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetTupleAccess().getRightDatamartHierarchyParserRuleCall_1_2_0()); 
+	    }
+		lv_right_4_0=ruleDatamartHierarchy		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetTupleRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_4_0, 
+        		"DatamartHierarchy");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartAggregationFunction
+entryRuleDatamartAggregationFunction returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartAggregationFunctionRule()); }
+	 iv_ruleDatamartAggregationFunction=ruleDatamartAggregationFunction 
+	 { $current=$iv_ruleDatamartAggregationFunction.current; } 
+	 EOF 
+;
+
+// Rule DatamartAggregationFunction
+ruleDatamartAggregationFunction returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAggregationFunctionAccess().getAggregationAggregationEnumEnumRuleCall_0()); 
+	    }
+		lv_aggregation_0_0=ruleAggregationEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAggregationFunctionRule());
+	        }
+       		set(
+       			$current, 
+       			"aggregation",
+        		lv_aggregation_0_0, 
+        		"AggregationEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartAggregation
+entryRuleDatamartAggregation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartAggregationRule()); }
+	 iv_ruleDatamartAggregation=ruleDatamartAggregation 
+	 { $current=$iv_ruleDatamartAggregation.current; } 
+	 EOF 
+;
+
+// Rule DatamartAggregation
+ruleDatamartAggregation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getAggregationDatamartAggregationFunctionParserRuleCall_0_0()); 
+	    }
+		lv_aggregation_0_0=ruleDatamartAggregationFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"aggregation",
+        		lv_aggregation_0_0, 
+        		"DatamartAggregationFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='of' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartAggregationAccess().getOfKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getSetDatamartSetTupleParserRuleCall_2_0_0()); 
+	    }
+		lv_set_2_0=ruleDatamartSetTuple		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"set",
+        		lv_set_2_0, 
+        		"DatamartSetTuple");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getSetDatamartHierarchyParserRuleCall_2_1_0()); 
+	    }
+		lv_set_3_0=ruleDatamartHierarchy		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"set",
+        		lv_set_3_0, 
+        		"DatamartHierarchy");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartAggregationAccess().getDatamartAggregationLeftAction_3_0(),
+            $current);
+    }
+)	otherlv_5='over' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartAggregationAccess().getOverKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getRightDatamartMeasureParserRuleCall_3_2_0()); 
+	    }
+		lv_right_6_0=ruleDatamartMeasure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_6_0, 
+        		"DatamartMeasure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSetAggregation
+entryRuleDatamartSetAggregation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSetAggregationRule()); }
+	 iv_ruleDatamartSetAggregation=ruleDatamartSetAggregation 
+	 { $current=$iv_ruleDatamartSetAggregation.current; } 
+	 EOF 
+;
+
+// Rule DatamartSetAggregation
+ruleDatamartSetAggregation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getAggregationDatamartSetAggregationFunctionParserRuleCall_0_0()); 
+	    }
+		lv_aggregation_0_0=ruleDatamartSetAggregationFunction		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"aggregation",
+        		lv_aggregation_0_0, 
+        		"DatamartSetAggregationFunction");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='of' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDatamartSetAggregationAccess().getOfKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getSetDatamartSetTupleParserRuleCall_2_0_0()); 
+	    }
+		lv_set_2_0=ruleDatamartSetTuple		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"set",
+        		lv_set_2_0, 
+        		"DatamartSetTuple");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getSetDatamartHierarchyParserRuleCall_2_1_0()); 
+	    }
+		lv_set_3_0=ruleDatamartHierarchy		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"set",
+        		lv_set_3_0, 
+        		"DatamartHierarchy");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDatamartSetAggregationAccess().getDatamartSetAggregationLeftAction_3_0(),
+            $current);
+    }
+)	otherlv_5='over' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartSetAggregationAccess().getOverKeyword_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getRightDatamartMeasureParserRuleCall_3_2_0()); 
+	    }
+		lv_right_6_0=ruleDatamartMeasure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_6_0, 
+        		"DatamartMeasure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartSlicer
+entryRuleDatamartSlicer returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartSlicerRule()); }
+	 iv_ruleDatamartSlicer=ruleDatamartSlicer 
+	 { $current=$iv_ruleDatamartSlicer.current; } 
+	 EOF 
+;
+
+// Rule DatamartSlicer
+ruleDatamartSlicer returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='slicer' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartSlicerAccess().getSlicerKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartSlicerAccess().getElementDatamartElementParserRuleCall_1_0()); 
+	    }
+		lv_element_1_0=ruleDatamartElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartSlicerRule());
+	        }
+       		set(
+       			$current, 
+       			"element",
+        		lv_element_1_0, 
+        		"DatamartElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartAxis
+entryRuleDatamartAxis returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartAxisRule()); }
+	 iv_ruleDatamartAxis=ruleDatamartAxis 
+	 { $current=$iv_ruleDatamartAxis.current; } 
+	 EOF 
+;
+
+// Rule DatamartAxis
+ruleDatamartAxis returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='axis' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartAxisAccess().getAxisKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAxisAccess().getNameAxisEnumEnumRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleAxisEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAxisRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"AxisEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDatamartAxisAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartAxisAccess().getElementsDatamartElementParserRuleCall_3_0()); 
+	    }
+		lv_elements_3_0=ruleDatamartElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartAxisRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"DatamartElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDatamartAxisAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartElement
+entryRuleDatamartElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartElementRule()); }
+	 iv_ruleDatamartElement=ruleDatamartElement 
+	 { $current=$iv_ruleDatamartElement.current; } 
+	 EOF 
+;
+
+// Rule DatamartElement
+ruleDatamartElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartHierarchyParserRuleCall_0()); 
+    }
+    this_DatamartHierarchy_0=ruleDatamartHierarchy
+    { 
+        $current = $this_DatamartHierarchy_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartMeasureParserRuleCall_1()); 
+    }
+    this_DatamartMeasure_1=ruleDatamartMeasure
+    { 
+        $current = $this_DatamartMeasure_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); 
+    }
+    this_DatamartDerivedMeasure_2=ruleDatamartDerivedMeasure
+    { 
+        $current = $this_DatamartDerivedMeasure_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartSetAggregationParserRuleCall_3()); 
+    }
+    this_DatamartSetAggregation_3=ruleDatamartSetAggregation
+    { 
+        $current = $this_DatamartSetAggregation_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartDerivedMeasure
+entryRuleDatamartDerivedMeasure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartDerivedMeasureRule()); }
+	 iv_ruleDatamartDerivedMeasure=ruleDatamartDerivedMeasure 
+	 { $current=$iv_ruleDatamartDerivedMeasure.current; } 
+	 EOF 
+;
+
+// Rule DatamartDerivedMeasure
+ruleDatamartDerivedMeasure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='derived' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartDerivedMeasureAccess().getDerivedKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartDerivedMeasureRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartDerivedMeasureAccess().getDerivedRefDatamartDefineDerivedMeasureCrossReference_1_0()); 
+	}
+
+)
+)((
+(
+		lv_scaled_2_0=	'scale' 
+    {
+        newLeafNode(lv_scaled_2_0, grammarAccess.getDatamartDerivedMeasureAccess().getScaledScaleKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartDerivedMeasureRule());
+	        }
+       		setWithLastConsumed($current, "scaled", true, "scale");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartDerivedMeasureAccess().getScaleValueScaleEnumEnumRuleCall_2_1_0()); 
+	    }
+		lv_scale_3_0=ruleValueScaleEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartDerivedMeasureRule());
+	        }
+       		set(
+       			$current, 
+       			"scale",
+        		lv_scale_3_0, 
+        		"ValueScaleEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartMeasure
+entryRuleDatamartMeasure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartMeasureRule()); }
+	 iv_ruleDatamartMeasure=ruleDatamartMeasure 
+	 { $current=$iv_ruleDatamartMeasure.current; } 
+	 EOF 
+;
+
+// Rule DatamartMeasure
+ruleDatamartMeasure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='measure' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartMeasureAccess().getMeasureKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartMeasureRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartMeasureAccess().getMeasureRefCubeMeasureCrossReference_1_0()); 
+	}
+
+)
+)((
+(
+		lv_scaled_2_0=	'scale' 
+    {
+        newLeafNode(lv_scaled_2_0, grammarAccess.getDatamartMeasureAccess().getScaledScaleKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartMeasureRule());
+	        }
+       		setWithLastConsumed($current, "scaled", true, "scale");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartMeasureAccess().getScaleValueScaleEnumEnumRuleCall_2_1_0()); 
+	    }
+		lv_scale_3_0=ruleValueScaleEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartMeasureRule());
+	        }
+       		set(
+       			$current, 
+       			"scale",
+        		lv_scale_3_0, 
+        		"ValueScaleEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartHierarchy
+entryRuleDatamartHierarchy returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartHierarchyRule()); }
+	 iv_ruleDatamartHierarchy=ruleDatamartHierarchy 
+	 { $current=$iv_ruleDatamartHierarchy.current; } 
+	 EOF 
+;
+
+// Rule DatamartHierarchy
+ruleDatamartHierarchy returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='hierarchy' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartHierarchyAccess().getHierarchyKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getDatamartHierarchyAccess().getHierarchyRefCubeHierarchyCrossReference_1_0()); 
+	}
+
+)
+)(
+(
+		lv_defaultMember_2_0=	'default' 
+    {
+        newLeafNode(lv_defaultMember_2_0, grammarAccess.getDatamartHierarchyAccess().getDefaultMemberDefaultKeyword_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "defaultMember", true, "default");
+	    }
+
+)
+)?(
+(
+		lv_allMember_3_0=	'condensed' 
+    {
+        newLeafNode(lv_allMember_3_0, grammarAccess.getDatamartHierarchyAccess().getAllMemberCondensedKeyword_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "allMember", true, "condensed");
+	    }
+
+)
+)?(
+(
+		lv_allLevels_4_0=	'exploded' 
+    {
+        newLeafNode(lv_allLevels_4_0, grammarAccess.getDatamartHierarchyAccess().getAllLevelsExplodedKeyword_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "allLevels", true, "exploded");
+	    }
+
+)
+)?(	otherlv_5='level' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDatamartHierarchyAccess().getLevelKeyword_5_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getDatamartHierarchyAccess().getLevelRefCubeLevelCrossReference_5_1_0()); 
+	}
+
+)
+)((
+(
+		lv_filtered_7_0=	'filtered' 
+    {
+        newLeafNode(lv_filtered_7_0, grammarAccess.getDatamartHierarchyAccess().getFilteredFilteredKeyword_5_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "filtered", true, "filtered");
+	    }
+
+)
+)
+    |(
+(
+		lv_selected_8_0=	'selected' 
+    {
+        newLeafNode(lv_selected_8_0, grammarAccess.getDatamartHierarchyAccess().getSelectedSelectedKeyword_5_2_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "selected", true, "selected");
+	    }
+
+)
+))?)?((
+(
+		lv_all_9_0=	'detailed' 
+    {
+        newLeafNode(lv_all_9_0, grammarAccess.getDatamartHierarchyAccess().getAllDetailedKeyword_6_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "all", true, "detailed");
+	    }
+
+)
+)((
+(
+		lv_except_10_0=	'except' 
+    {
+        newLeafNode(lv_except_10_0, grammarAccess.getDatamartHierarchyAccess().getExceptExceptKeyword_6_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "except", true, "except");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+        }
+	otherlv_11=RULE_ID
+	{
+		newLeafNode(otherlv_11, grammarAccess.getDatamartHierarchyAccess().getExceptRefCubeLevelCrossReference_6_1_1_0()); 
+	}
+
+)
+))?((
+(
+		lv_ordered_12_0=	'ordered by' 
+    {
+        newLeafNode(lv_ordered_12_0, grammarAccess.getDatamartHierarchyAccess().getOrderedOrderedByKeyword_6_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "ordered", true, "ordered by");
+	    }
+
+)
+)(
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0()); 
+	    }
+		lv_orderRef_13_1=ruleDatamartMeasure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		set(
+       			$current, 
+       			"orderRef",
+        		lv_orderRef_13_1, 
+        		"DatamartMeasure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+    |		{ 
+	        newCompositeNode(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1()); 
+	    }
+		lv_orderRef_13_2=ruleDatamartDerivedMeasure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		set(
+       			$current, 
+       			"orderRef",
+        		lv_orderRef_13_2, 
+        		"DatamartDerivedMeasure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+
+)
+)(
+(
+		lv_descending_14_0=	'descending' 
+    {
+        newLeafNode(lv_descending_14_0, grammarAccess.getDatamartHierarchyAccess().getDescendingDescendingKeyword_6_2_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "descending", true, "descending");
+	    }
+
+)
+)?)?)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartImport
+entryRuleDatamartImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartImportRule()); }
+	 iv_ruleDatamartImport=ruleDatamartImport 
+	 { $current=$iv_ruleDatamartImport.current; } 
+	 EOF 
+;
+
+// Rule DatamartImport
+ruleDatamartImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDatamartImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDatamartImportAccess().getImportedNamespaceDatamartQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleDatamartQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDatamartImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"DatamartQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleDatamartQualifiedNameWithWildCard
+entryRuleDatamartQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDatamartQualifiedNameWithWildCardRule()); } 
+	 iv_ruleDatamartQualifiedNameWithWildCard=ruleDatamartQualifiedNameWithWildCard 
+	 { $current=$iv_ruleDatamartQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule DatamartQualifiedNameWithWildCard
+ruleDatamartQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDatamartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getDatamartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getDatamartQualifiedNameWithWildCardAccess().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 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 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 entryRulePropertyFillerData
+entryRulePropertyFillerData returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerDataRule()); }
+	 iv_rulePropertyFillerData=rulePropertyFillerData 
+	 { $current=$iv_rulePropertyFillerData.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerData
+rulePropertyFillerData returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='fill' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerDataAccess().getFillKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerDataRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getPropertyFillerDataAccess().getPropertyRefLEntityAttributeCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='with' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPropertyFillerDataAccess().getWithKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerDataAccess().getFillerTypePropertyFillerTypeParserRuleCall_3_0()); 
+	    }
+		lv_fillerType_3_0=rulePropertyFillerType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerDataRule());
+	        }
+       		set(
+       			$current, 
+       			"fillerType",
+        		lv_fillerType_3_0, 
+        		"PropertyFillerType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerType
+entryRulePropertyFillerType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerTypeRule()); }
+	 iv_rulePropertyFillerType=rulePropertyFillerType 
+	 { $current=$iv_rulePropertyFillerType.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerType
+rulePropertyFillerType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateFutureParserRuleCall_0()); 
+    }
+    this_PropertyFillerDateFuture_0=rulePropertyFillerDateFuture
+    { 
+        $current = $this_PropertyFillerDateFuture_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDatePastParserRuleCall_1()); 
+    }
+    this_PropertyFillerDatePast_1=rulePropertyFillerDatePast
+    { 
+        $current = $this_PropertyFillerDatePast_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerDateRangeParserRuleCall_2()); 
+    }
+    this_PropertyFillerDateRange_2=rulePropertyFillerDateRange
+    { 
+        $current = $this_PropertyFillerDateRange_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRangeParserRuleCall_3()); 
+    }
+    this_PropertyFillerSignedDoubleRange_3=rulePropertyFillerSignedDoubleRange
+    { 
+        $current = $this_PropertyFillerSignedDoubleRange_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedDoubleRandomParserRuleCall_4()); 
+    }
+    this_PropertyFillerSignedDoubleRandom_4=rulePropertyFillerSignedDoubleRandom
+    { 
+        $current = $this_PropertyFillerSignedDoubleRandom_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRangeParserRuleCall_5()); 
+    }
+    this_PropertyFillerSignedIntegerRange_5=rulePropertyFillerSignedIntegerRange
+    { 
+        $current = $this_PropertyFillerSignedIntegerRange_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerSignedIntegerRandomParserRuleCall_6()); 
+    }
+    this_PropertyFillerSignedIntegerRandom_6=rulePropertyFillerSignedIntegerRandom
+    { 
+        $current = $this_PropertyFillerSignedIntegerRandom_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextRandomParserRuleCall_7()); 
+    }
+    this_PropertyFillerTextRandom_7=rulePropertyFillerTextRandom
+    { 
+        $current = $this_PropertyFillerTextRandom_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextParagraphsParserRuleCall_8()); 
+    }
+    this_PropertyFillerTextParagraphs_8=rulePropertyFillerTextParagraphs
+    { 
+        $current = $this_PropertyFillerTextParagraphs_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextSentencesParserRuleCall_9()); 
+    }
+    this_PropertyFillerTextSentences_9=rulePropertyFillerTextSentences
+    { 
+        $current = $this_PropertyFillerTextSentences_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerTextWordsParserRuleCall_10()); 
+    }
+    this_PropertyFillerTextWords_10=rulePropertyFillerTextWords
+    { 
+        $current = $this_PropertyFillerTextWords_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRangeParserRuleCall_11()); 
+    }
+    this_PropertyFillerUnsignedDoubleRange_11=rulePropertyFillerUnsignedDoubleRange
+    { 
+        $current = $this_PropertyFillerUnsignedDoubleRange_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedDoubleRandomParserRuleCall_12()); 
+    }
+    this_PropertyFillerUnsignedDoubleRandom_12=rulePropertyFillerUnsignedDoubleRandom
+    { 
+        $current = $this_PropertyFillerUnsignedDoubleRandom_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRangeParserRuleCall_13()); 
+    }
+    this_PropertyFillerUnsignedIntegerRange_13=rulePropertyFillerUnsignedIntegerRange
+    { 
+        $current = $this_PropertyFillerUnsignedIntegerRange_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getPropertyFillerTypeAccess().getPropertyFillerUnsignedIntegerRandomParserRuleCall_14()); 
+    }
+    this_PropertyFillerUnsignedIntegerRandom_14=rulePropertyFillerUnsignedIntegerRandom
+    { 
+        $current = $this_PropertyFillerUnsignedIntegerRandom_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerDateFuture
+entryRulePropertyFillerDateFuture returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerDateFutureRule()); }
+	 iv_rulePropertyFillerDateFuture=rulePropertyFillerDateFuture 
+	 { $current=$iv_rulePropertyFillerDateFuture.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerDateFuture
+rulePropertyFillerDateFuture returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-date future' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerDateFutureAccess().getFillerDateFutureKeyword_0());
+    }
+(
+(
+		lv_dateFutureYears_1_0=RULE_INT
+		{
+			newLeafNode(lv_dateFutureYears_1_0, grammarAccess.getPropertyFillerDateFutureAccess().getDateFutureYearsINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerDateFutureRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"dateFutureYears",
+        		lv_dateFutureYears_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='years' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPropertyFillerDateFutureAccess().getYearsKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerDatePast
+entryRulePropertyFillerDatePast returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerDatePastRule()); }
+	 iv_rulePropertyFillerDatePast=rulePropertyFillerDatePast 
+	 { $current=$iv_rulePropertyFillerDatePast.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerDatePast
+rulePropertyFillerDatePast returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-date past' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerDatePastAccess().getFillerDatePastKeyword_0());
+    }
+(
+(
+		lv_datePastYears_1_0=RULE_INT
+		{
+			newLeafNode(lv_datePastYears_1_0, grammarAccess.getPropertyFillerDatePastAccess().getDatePastYearsINTTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerDatePastRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"datePastYears",
+        		lv_datePastYears_1_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_2='years' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPropertyFillerDatePastAccess().getYearsKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerDateRange
+entryRulePropertyFillerDateRange returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerDateRangeRule()); }
+	 iv_rulePropertyFillerDateRange=rulePropertyFillerDateRange 
+	 { $current=$iv_rulePropertyFillerDateRange.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerDateRange
+rulePropertyFillerDateRange returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-date range' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerDateRangeAccess().getFillerDateRangeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerDateRangeAccess().getDateBeginYearsSINTParserRuleCall_1_0()); 
+	    }
+		lv_dateBeginYears_1_0=ruleSINT		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerDateRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateBeginYears",
+        		lv_dateBeginYears_1_0, 
+        		"SINT");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='up to and including' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getPropertyFillerDateRangeAccess().getUpToAndIncludingKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerDateRangeAccess().getDateEndYearsSINTParserRuleCall_3_0()); 
+	    }
+		lv_dateEndYears_3_0=ruleSINT		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerDateRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateEndYears",
+        		lv_dateEndYears_3_0, 
+        		"SINT");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4='years' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPropertyFillerDateRangeAccess().getYearsKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerSignedDoubleRange
+entryRulePropertyFillerSignedDoubleRange returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerSignedDoubleRangeRule()); }
+	 iv_rulePropertyFillerSignedDoubleRange=rulePropertyFillerSignedDoubleRange 
+	 { $current=$iv_rulePropertyFillerSignedDoubleRange.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedDoubleRange
+rulePropertyFillerSignedDoubleRange returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-signed-double range' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getFillerSignedDoubleRangeKeyword_0());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeSignedNumberParserRuleCall_1_0_0_0()); 
+	    }
+		lv_beginRange_1_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedDoubleRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"beginRange",
+        		lv_beginRange_1_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerSignedDoubleRangeRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getBeginRangeRefLEntityAttributeCrossReference_1_0_1_0()); 
+	}
+
+)
+))?	otherlv_3='up to and including' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getUpToAndIncludingKeyword_1_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeSignedNumberParserRuleCall_1_2_0_0()); 
+	    }
+		lv_endRange_4_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedDoubleRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"endRange",
+        		lv_endRange_4_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerSignedDoubleRangeRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getEndRangeRefLEntityAttributeCrossReference_1_2_1_0()); 
+	}
+
+)
+)))?	otherlv_6='with' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getWithKeyword_2());
+    }
+(
+(
+		lv_decimals_7_0=RULE_INT
+		{
+			newLeafNode(lv_decimals_7_0, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getDecimalsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerSignedDoubleRangeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"decimals",
+        		lv_decimals_7_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_8='decimals' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getDecimalsKeyword_4());
+    }
+(	otherlv_9='round to' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getRoundToKeyword_5_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedDoubleRangeAccess().getRoundedUnsignedNumberParserRuleCall_5_1_0()); 
+	    }
+		lv_rounded_10_0=ruleUnsignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedDoubleRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"rounded",
+        		lv_rounded_10_0, 
+        		"UnsignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerSignedDoubleRandom
+entryRulePropertyFillerSignedDoubleRandom returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerSignedDoubleRandomRule()); }
+	 iv_rulePropertyFillerSignedDoubleRandom=rulePropertyFillerSignedDoubleRandom 
+	 { $current=$iv_rulePropertyFillerSignedDoubleRandom.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedDoubleRandom
+rulePropertyFillerSignedDoubleRandom returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-signed-double random' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getFillerSignedDoubleRandomKeyword_0());
+    }
+	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getItemsSignedNumberParserRuleCall_2_0()); 
+	    }
+		lv_items_2_0=ruleSignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedDoubleRandomRule());
+	        }
+       		add(
+       			$current, 
+       			"items",
+        		lv_items_2_0, 
+        		"SignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerSignedDoubleRandomAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerSignedIntegerRange
+entryRulePropertyFillerSignedIntegerRange returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerSignedIntegerRangeRule()); }
+	 iv_rulePropertyFillerSignedIntegerRange=rulePropertyFillerSignedIntegerRange 
+	 { $current=$iv_rulePropertyFillerSignedIntegerRange.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedIntegerRange
+rulePropertyFillerSignedIntegerRange returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getPropertyFillerSignedIntegerRangeAction_0(),
+            $current);
+    }
+)	otherlv_1='filler-signed-integer range' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getFillerSignedIntegerRangeKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeSINTParserRuleCall_2_0_0_0()); 
+	    }
+		lv_beginRange_2_0=ruleSINT		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedIntegerRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"beginRange",
+        		lv_beginRange_2_0, 
+        		"SINT");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerSignedIntegerRangeRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getBeginRangeRefLEntityAttributeCrossReference_2_0_1_0()); 
+	}
+
+)
+))?	otherlv_4='up to and including' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getUpToAndIncludingKeyword_2_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeSINTParserRuleCall_2_2_0_0()); 
+	    }
+		lv_endRange_5_0=ruleSINT		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedIntegerRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"endRange",
+        		lv_endRange_5_0, 
+        		"SINT");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerSignedIntegerRangeRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getEndRangeRefLEntityAttributeCrossReference_2_2_1_0()); 
+	}
+
+)
+)))?(	otherlv_7='round to' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getRoundToKeyword_3_0());
+    }
+(
+(
+		lv_rounded_8_0=RULE_INT
+		{
+			newLeafNode(lv_rounded_8_0, grammarAccess.getPropertyFillerSignedIntegerRangeAccess().getRoundedINTTerminalRuleCall_3_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerSignedIntegerRangeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"rounded",
+        		lv_rounded_8_0, 
+        		"INT");
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerSignedIntegerRandom
+entryRulePropertyFillerSignedIntegerRandom returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerSignedIntegerRandomRule()); }
+	 iv_rulePropertyFillerSignedIntegerRandom=rulePropertyFillerSignedIntegerRandom 
+	 { $current=$iv_rulePropertyFillerSignedIntegerRandom.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerSignedIntegerRandom
+rulePropertyFillerSignedIntegerRandom returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-signed-integer random' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getFillerSignedIntegerRandomKeyword_0());
+    }
+	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getItemsSINTParserRuleCall_2_0()); 
+	    }
+		lv_items_2_0=ruleSINT		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerSignedIntegerRandomRule());
+	        }
+       		add(
+       			$current, 
+       			"items",
+        		lv_items_2_0, 
+        		"SINT");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerSignedIntegerRandomAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerTextRandom
+entryRulePropertyFillerTextRandom returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerTextRandomRule()); }
+	 iv_rulePropertyFillerTextRandom=rulePropertyFillerTextRandom 
+	 { $current=$iv_rulePropertyFillerTextRandom.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextRandom
+rulePropertyFillerTextRandom returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-text random' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerTextRandomAccess().getFillerTextRandomKeyword_0());
+    }
+	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerTextRandomAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		lv_items_2_0=RULE_STRING
+		{
+			newLeafNode(lv_items_2_0, grammarAccess.getPropertyFillerTextRandomAccess().getItemsSTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerTextRandomRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"items",
+        		lv_items_2_0, 
+        		"STRING");
+	    }
+
+)
+)+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerTextRandomAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerTextParagraphs
+entryRulePropertyFillerTextParagraphs returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerTextParagraphsRule()); }
+	 iv_rulePropertyFillerTextParagraphs=rulePropertyFillerTextParagraphs 
+	 { $current=$iv_rulePropertyFillerTextParagraphs.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextParagraphs
+rulePropertyFillerTextParagraphs returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPropertyFillerTextParagraphsAccess().getPropertyFillerTextParagraphsAction_0(),
+            $current);
+    }
+)	otherlv_1='filler-text paragraps' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerTextParagraphsAccess().getFillerTextParagrapsKeyword_1());
+    }
+(
+(
+		lv_count_2_0=RULE_INT
+		{
+			newLeafNode(lv_count_2_0, grammarAccess.getPropertyFillerTextParagraphsAccess().getCountINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerTextParagraphsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"count",
+        		lv_count_2_0, 
+        		"INT");
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerTextSentences
+entryRulePropertyFillerTextSentences returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerTextSentencesRule()); }
+	 iv_rulePropertyFillerTextSentences=rulePropertyFillerTextSentences 
+	 { $current=$iv_rulePropertyFillerTextSentences.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextSentences
+rulePropertyFillerTextSentences returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPropertyFillerTextSentencesAccess().getPropertyFillerTextSentencesAction_0(),
+            $current);
+    }
+)	otherlv_1='filler-text sentences' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerTextSentencesAccess().getFillerTextSentencesKeyword_1());
+    }
+(
+(
+		lv_count_2_0=RULE_INT
+		{
+			newLeafNode(lv_count_2_0, grammarAccess.getPropertyFillerTextSentencesAccess().getCountINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerTextSentencesRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"count",
+        		lv_count_2_0, 
+        		"INT");
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerTextWords
+entryRulePropertyFillerTextWords returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerTextWordsRule()); }
+	 iv_rulePropertyFillerTextWords=rulePropertyFillerTextWords 
+	 { $current=$iv_rulePropertyFillerTextWords.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerTextWords
+rulePropertyFillerTextWords returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPropertyFillerTextWordsAccess().getPropertyFillerTextWordsAction_0(),
+            $current);
+    }
+)	otherlv_1='filler-text words' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerTextWordsAccess().getFillerTextWordsKeyword_1());
+    }
+(
+(
+		lv_count_2_0=RULE_INT
+		{
+			newLeafNode(lv_count_2_0, grammarAccess.getPropertyFillerTextWordsAccess().getCountINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerTextWordsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"count",
+        		lv_count_2_0, 
+        		"INT");
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedDoubleRange
+entryRulePropertyFillerUnsignedDoubleRange returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule()); }
+	 iv_rulePropertyFillerUnsignedDoubleRange=rulePropertyFillerUnsignedDoubleRange 
+	 { $current=$iv_rulePropertyFillerUnsignedDoubleRange.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedDoubleRange
+rulePropertyFillerUnsignedDoubleRange returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-unsigned-double range' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getFillerUnsignedDoubleRangeKeyword_0());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeUnsignedNumberParserRuleCall_1_0_0_0()); 
+	    }
+		lv_beginRange_1_0=ruleUnsignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"beginRange",
+        		lv_beginRange_1_0, 
+        		"UnsignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule());
+	        }
+        }
+	otherlv_2=RULE_ID
+	{
+		newLeafNode(otherlv_2, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getBeginRangeRefLEntityAttributeCrossReference_1_0_1_0()); 
+	}
+
+)
+))?	otherlv_3='up to and including' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getUpToAndIncludingKeyword_1_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeUnsignedNumberParserRuleCall_1_2_0_0()); 
+	    }
+		lv_endRange_4_0=ruleUnsignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"endRange",
+        		lv_endRange_4_0, 
+        		"UnsignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule());
+	        }
+        }
+	otherlv_5=RULE_ID
+	{
+		newLeafNode(otherlv_5, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getEndRangeRefLEntityAttributeCrossReference_1_2_1_0()); 
+	}
+
+)
+)))?	otherlv_6='with' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getWithKeyword_2());
+    }
+(
+(
+		lv_decimals_7_0=RULE_INT
+		{
+			newLeafNode(lv_decimals_7_0, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getDecimalsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"decimals",
+        		lv_decimals_7_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_8='decimals' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getDecimalsKeyword_4());
+    }
+(	otherlv_9='round to' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getRoundToKeyword_5_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerUnsignedDoubleRangeAccess().getRoundedUnsignedNumberParserRuleCall_5_1_0()); 
+	    }
+		lv_rounded_10_0=ruleUnsignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerUnsignedDoubleRangeRule());
+	        }
+       		set(
+       			$current, 
+       			"rounded",
+        		lv_rounded_10_0, 
+        		"UnsignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedDoubleRandom
+entryRulePropertyFillerUnsignedDoubleRandom returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerUnsignedDoubleRandomRule()); }
+	 iv_rulePropertyFillerUnsignedDoubleRandom=rulePropertyFillerUnsignedDoubleRandom 
+	 { $current=$iv_rulePropertyFillerUnsignedDoubleRandom.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedDoubleRandom
+rulePropertyFillerUnsignedDoubleRandom returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-unsigned-double random' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getFillerUnsignedDoubleRandomKeyword_0());
+    }
+	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getItemsUnsignedNumberParserRuleCall_2_0()); 
+	    }
+		lv_items_2_0=ruleUnsignedNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getPropertyFillerUnsignedDoubleRandomRule());
+	        }
+       		add(
+       			$current, 
+       			"items",
+        		lv_items_2_0, 
+        		"UnsignedNumber");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerUnsignedDoubleRandomAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedIntegerRange
+entryRulePropertyFillerUnsignedIntegerRange returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule()); }
+	 iv_rulePropertyFillerUnsignedIntegerRange=rulePropertyFillerUnsignedIntegerRange 
+	 { $current=$iv_rulePropertyFillerUnsignedIntegerRange.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedIntegerRange
+rulePropertyFillerUnsignedIntegerRange returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getPropertyFillerUnsignedIntegerRangeAction_0(),
+            $current);
+    }
+)	otherlv_1='filler-unsigned-integer range' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getFillerUnsignedIntegerRangeKeyword_1());
+    }
+(((
+(
+		lv_beginRange_2_0=RULE_INT
+		{
+			newLeafNode(lv_beginRange_2_0, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeINTTerminalRuleCall_2_0_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"beginRange",
+        		lv_beginRange_2_0, 
+        		"INT");
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getBeginRangeRefLEntityAttributeCrossReference_2_0_1_0()); 
+	}
+
+)
+))?	otherlv_4='up to and including' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getUpToAndIncludingKeyword_2_1());
+    }
+((
+(
+		lv_endRange_5_0=RULE_INT
+		{
+			newLeafNode(lv_endRange_5_0, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeINTTerminalRuleCall_2_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"endRange",
+        		lv_endRange_5_0, 
+        		"INT");
+	    }
+
+)
+)
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getEndRangeRefLEntityAttributeCrossReference_2_2_1_0()); 
+	}
+
+)
+)))?(	otherlv_7='round to' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getRoundToKeyword_3_0());
+    }
+(
+(
+		lv_rounded_8_0=RULE_INT
+		{
+			newLeafNode(lv_rounded_8_0, grammarAccess.getPropertyFillerUnsignedIntegerRangeAccess().getRoundedINTTerminalRuleCall_3_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedIntegerRangeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"rounded",
+        		lv_rounded_8_0, 
+        		"INT");
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRulePropertyFillerUnsignedIntegerRandom
+entryRulePropertyFillerUnsignedIntegerRandom returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getPropertyFillerUnsignedIntegerRandomRule()); }
+	 iv_rulePropertyFillerUnsignedIntegerRandom=rulePropertyFillerUnsignedIntegerRandom 
+	 { $current=$iv_rulePropertyFillerUnsignedIntegerRandom.current; } 
+	 EOF 
+;
+
+// Rule PropertyFillerUnsignedIntegerRandom
+rulePropertyFillerUnsignedIntegerRandom returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='filler-unsigned-integer random' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getFillerUnsignedIntegerRandomKeyword_0());
+    }
+	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		lv_items_2_0=RULE_INT
+		{
+			newLeafNode(lv_items_2_0, grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getItemsINTTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getPropertyFillerUnsignedIntegerRandomRule());
+	        }
+       		addWithLastConsumed(
+       			$current, 
+       			"items",
+        		lv_items_2_0, 
+        		"INT");
+	    }
+
+)
+)+	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getPropertyFillerUnsignedIntegerRandomAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleSignedNumber
+entryRuleSignedNumber returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSignedNumberRule()); } 
+	 iv_ruleSignedNumber=ruleSignedNumber 
+	 { $current=$iv_ruleSignedNumber.current.getText(); }  
+	 EOF 
+;
+
+// Rule SignedNumber
+ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
+    }
+)?
+    { 
+        newCompositeNode(grammarAccess.getSignedNumberAccess().getUnsignedNumberParserRuleCall_1()); 
+    }
+    this_UnsignedNumber_1=ruleUnsignedNumber    {
+		$current.merge(this_UnsignedNumber_1);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleUnsignedNumber
+entryRuleUnsignedNumber returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getUnsignedNumberRule()); } 
+	 iv_ruleUnsignedNumber=ruleUnsignedNumber 
+	 { $current=$iv_ruleUnsignedNumber.current.getText(); }  
+	 EOF 
+;
+
+// Rule UnsignedNumber
+ruleUnsignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_INT_0=RULE_INT    {
+		$current.merge(this_INT_0);
+    }
+
+    { 
+    newLeafNode(this_INT_0, grammarAccess.getUnsignedNumberAccess().getINTTerminalRuleCall_0()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getUnsignedNumberAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getUnsignedNumberAccess().getINTTerminalRuleCall_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleSINT
+entryRuleSINT returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSINTRule()); } 
+	 iv_ruleSINT=ruleSINT 
+	 { $current=$iv_ruleSINT.current.getText(); }  
+	 EOF 
+;
+
+// Rule SINT
+ruleSINT returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getSINTAccess().getHyphenMinusKeyword_0()); 
+    }
+)?    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getSINTAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// 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 
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.tokens b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.tokens
new file mode 100644
index 0000000..dcf77b1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.tokens
@@ -0,0 +1,415 @@
+'!'=124
+'!='=112
+'!=='=114
+'#'=98
+'%'=123
+'%='=105
+'&&'=110
+'&'=157
+'('=46
+')'=47
+'*'=55
+'**'=122
+'*='=103
+'+'=53
+'++'=126
+'+='=101
+','=96
+'-'=54
+'--'=127
+'-='=102
+'->'=116
+'.'=73
+'..'=118
+'..<'=117
+'/'=56
+'/='=104
+':'=135
+'::'=128
+';'=131
+'<'=106
+'<='=181
+'<>'=120
+'='=97
+'=='=111
+'==='=113
+'=>'=119
+'>'=107
+'>='=108
+'?'=156
+'?.'=129
+'?:'=121
+'@'=95
+'ActivationTime'=207
+'ActualOwner'=208
+'BusinessAdministrator'=193
+'CreatedBy'=206
+'CreatedOn'=205
+'Description'=203
+'ExcludedOwner'=198
+'ExpirationTime'=204
+'Groups'=213
+'Name'=199
+'PotentialOwner'=194
+'Priority'=200
+'ProcessId'=210
+'ProcessInstanceId'=211
+'ProcessSessionId'=212
+'Recipient'=195
+'Status'=201
+'Subject'=202
+'TaskId'=209
+'TaskInitiator'=196
+'TaskStakeholder'=197
+'Users'=214
+'['=99
+']'=100
+'aggregate'=39
+'and'=45
+'as'=125
+'ascending'=215
+'average'=178
+'axis'=60
+'bottomcount'=175
+'bottompercentage'=177
+'bottomsummation'=176
+'case'=136
+'catch'=155
+'chapters'=161
+'column'=24
+'columns'=22
+'condensed'=65
+'condition'=42
+'conditions'=23
+'count'=183
+'cube'=26
+'datamart'=16
+'decimals'=82
+'default'=64
+'derive'=51
+'derived'=61
+'descending'=71
+'described by'=17
+'detailed'=68
+'deviation'=180
+'do'=138
+'else'=133
+'entity'=29
+'except'=69
+'exploded'=66
+'extends'=141
+'extension'=143
+'false'=146
+'fill'=74
+'filler rows'=34
+'filler-date future'=76
+'filler-date past'=78
+'filler-date range'=79
+'filler-signed-double random'=84
+'filler-signed-double range'=81
+'filler-signed-integer random'=86
+'filler-signed-integer range'=85
+'filler-text paragraps'=88
+'filler-text random'=87
+'filler-text sentences'=89
+'filler-text words'=90
+'filler-unsigned-double random'=92
+'filler-unsigned-double range'=91
+'filler-unsigned-integer random'=94
+'filler-unsigned-integer range'=93
+'filter'=25
+'filtered'=48
+'finally'=153
+'first'=164
+'for'=18
+'from'=52
+'group1'=184
+'group2'=185
+'group3'=186
+'group4'=187
+'group5'=188
+'group6'=189
+'group7'=190
+'group8'=191
+'group9'=192
+'head'=171
+'hierarchy'=63
+'if'=132
+'import'=72
+'instanceof'=115
+'join'=28
+'lag'=166
+'last'=165
+'lead'=167
+'level'=67
+'like'=182
+'many to one'=36
+'measure'=62
+'navigation'=31
+'new'=145
+'next'=163
+'nonempty values'=27
+'null'=148
+'of'=57
+'on axis'=40
+'one to many'=37
+'optional'=49
+'or'=44
+'order'=43
+'ordered by'=70
+'ordering'=33
+'over'=58
+'package'=13
+'pages'=159
+'periods'=169
+'previous'=162
+'properties'=32
+'property'=38
+'return'=151
+'role'=20
+'round to'=83
+'rows'=158
+'scale'=41
+'sections'=160
+'selected'=50
+'slicer'=59
+'static'=142
+'summation'=179
+'super'=144
+'switch'=134
+'synchronized'=154
+'tail'=170
+'task'=21
+'throw'=150
+'to'=35
+'topcount'=172
+'toppercentage'=174
+'topsummation'=173
+'tracking'=30
+'true'=147
+'try'=152
+'typeof'=149
+'up to and including'=80
+'using'=19
+'val'=140
+'var'=139
+'while'=137
+'with'=75
+'year-to-date'=168
+'years'=77
+'{'=14
+'|'=130
+'||'=109
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=4
+RULE_INT=5
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=6
+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__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
+T__159=159
+T__15=15
+T__160=160
+T__161=161
+T__162=162
+T__163=163
+T__164=164
+T__165=165
+T__166=166
+T__167=167
+T__168=168
+T__169=169
+T__16=16
+T__170=170
+T__171=171
+T__172=172
+T__173=173
+T__174=174
+T__175=175
+T__176=176
+T__177=177
+T__178=178
+T__179=179
+T__17=17
+T__180=180
+T__181=181
+T__182=182
+T__183=183
+T__184=184
+T__185=185
+T__186=186
+T__187=187
+T__188=188
+T__189=189
+T__18=18
+T__190=190
+T__191=191
+T__192=192
+T__193=193
+T__194=194
+T__195=195
+T__196=196
+T__197=197
+T__198=198
+T__199=199
+T__19=19
+T__200=200
+T__201=201
+T__202=202
+T__203=203
+T__204=204
+T__205=205
+T__206=206
+T__207=207
+T__208=208
+T__209=209
+T__20=20
+T__210=210
+T__211=211
+T__212=212
+T__213=213
+T__214=214
+T__215=215
+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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSLLexer.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSLLexer.java
new file mode 100644
index 0000000..f2d669f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSLLexer.java
@@ -0,0 +1,8435 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 InternalDatamartDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    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__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=5;
+    public static final int T__66=66;
+    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__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    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__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    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__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__100=100;
+    public static final int T__102=102;
+    public static final int T__101=101;
+    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__13=13;
+    public static final int T__14=14;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__121=121;
+    public static final int T__124=124;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__117=117;
+    public static final int T__116=116;
+    public static final int T__111=111;
+    public static final int T__110=110;
+    public static final int T__113=113;
+    public static final int T__112=112;
+    public static final int T__108=108;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__103=103;
+    public static final int T__106=106;
+    public static final int T__105=105;
+    public static final int RULE_HEX=7;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    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 T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=6;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+    public InternalDatamartDSLLexer() {;} 
+    public InternalDatamartDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDatamartDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:14:7: ( 'datamart' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:14:9: 'datamart'
+            {
+            match("datamart"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:15:7: ( 'described by' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:15:9: 'described by'
+            {
+            match("described by"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:16:7: ( 'for' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:16:9: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:17:7: ( 'using' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:17:9: 'using'
+            {
+            match("using"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:18:7: ( 'role' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:18:9: 'role'
+            {
+            match("role"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:19:7: ( 'task' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:19:9: 'task'
+            {
+            match("task"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:20:7: ( 'columns' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:20:9: 'columns'
+            {
+            match("columns"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:21:7: ( 'conditions' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:21:9: 'conditions'
+            {
+            match("conditions"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:22:7: ( 'column' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:22:9: 'column'
+            {
+            match("column"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:23:7: ( 'filter' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:23:9: 'filter'
+            {
+            match("filter"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:24:7: ( 'cube' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:24:9: 'cube'
+            {
+            match("cube"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:25:7: ( 'nonempty values' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:25:9: 'nonempty values'
+            {
+            match("nonempty values"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:26:7: ( 'join' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:26:9: 'join'
+            {
+            match("join"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:27:7: ( 'entity' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:27:9: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:28:7: ( 'tracking' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:28:9: 'tracking'
+            {
+            match("tracking"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:29:7: ( 'navigation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:29:9: 'navigation'
+            {
+            match("navigation"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:30:7: ( 'properties' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:30:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:31:7: ( 'ordering' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:31:9: 'ordering'
+            {
+            match("ordering"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:32:7: ( 'filler rows' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:32:9: 'filler rows'
+            {
+            match("filler rows"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:33:7: ( 'to' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:33:9: 'to'
+            {
+            match("to"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:34:7: ( 'many to one' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:34:9: 'many to one'
+            {
+            match("many to one"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:35:7: ( 'one to many' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:35:9: 'one to many'
+            {
+            match("one to many"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:36:7: ( 'property' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:36:9: 'property'
+            {
+            match("property"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:37:7: ( 'aggregate' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:37:9: 'aggregate'
+            {
+            match("aggregate"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:38:7: ( 'on axis' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:38:9: 'on axis'
+            {
+            match("on axis"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:39:7: ( 'scale' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:39:9: 'scale'
+            {
+            match("scale"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:40:7: ( 'condition' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:40:9: 'condition'
+            {
+            match("condition"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:41:7: ( 'order' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:41:9: 'order'
+            {
+            match("order"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:42:7: ( 'or' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:42:9: 'or'
+            {
+            match("or"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:43:7: ( 'and' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:43:9: 'and'
+            {
+            match("and"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:44:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:45:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:46:7: ( 'filtered' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:46:9: 'filtered'
+            {
+            match("filtered"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:47:7: ( 'optional' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:47:9: 'optional'
+            {
+            match("optional"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:48:7: ( 'selected' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:48:9: 'selected'
+            {
+            match("selected"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:49:7: ( 'derive' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:49:9: 'derive'
+            {
+            match("derive"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:50:7: ( 'from' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:50:9: 'from'
+            {
+            match("from"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:51:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:52:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:53:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:54:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:55:7: ( 'of' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:55:9: 'of'
+            {
+            match("of"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:56:7: ( 'over' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:56:9: 'over'
+            {
+            match("over"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:57:7: ( 'slicer' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:57:9: 'slicer'
+            {
+            match("slicer"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:58:7: ( 'axis' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:58:9: 'axis'
+            {
+            match("axis"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:59:7: ( 'derived' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:59:9: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:60:7: ( 'measure' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:60:9: 'measure'
+            {
+            match("measure"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:61:7: ( 'hierarchy' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:61:9: 'hierarchy'
+            {
+            match("hierarchy"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:62:7: ( 'default' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:62:9: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:63:7: ( 'condensed' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:63:9: 'condensed'
+            {
+            match("condensed"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:64:7: ( 'exploded' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:64:9: 'exploded'
+            {
+            match("exploded"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:65:7: ( 'level' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:65:9: 'level'
+            {
+            match("level"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:66:7: ( 'detailed' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:66:9: 'detailed'
+            {
+            match("detailed"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:67:7: ( 'except' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:67:9: 'except'
+            {
+            match("except"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:68:7: ( 'ordered by' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:68:9: 'ordered by'
+            {
+            match("ordered by"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:69:7: ( 'descending' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:69:9: 'descending'
+            {
+            match("descending"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:70:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:70:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:71:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:72:7: ( 'fill' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:72:9: 'fill'
+            {
+            match("fill"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:73:7: ( 'with' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:73:9: 'with'
+            {
+            match("with"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:74:7: ( 'filler-date future' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:74:9: 'filler-date future'
+            {
+            match("filler-date future"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:75:7: ( 'years' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:75:9: 'years'
+            {
+            match("years"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:76:7: ( 'filler-date past' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:76:9: 'filler-date past'
+            {
+            match("filler-date past"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:77:7: ( 'filler-date range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:77:9: 'filler-date range'
+            {
+            match("filler-date range"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:78:7: ( 'up to and including' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:78:9: 'up to and including'
+            {
+            match("up to and including"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:79:7: ( 'filler-signed-double range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:79:9: 'filler-signed-double range'
+            {
+            match("filler-signed-double range"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:80:7: ( 'decimals' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:80:9: 'decimals'
+            {
+            match("decimals"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:81:7: ( 'round to' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:81:9: 'round to'
+            {
+            match("round to"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:82:7: ( 'filler-signed-double random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:82:9: 'filler-signed-double random'
+            {
+            match("filler-signed-double random"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:83:7: ( 'filler-signed-integer range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:83:9: 'filler-signed-integer range'
+            {
+            match("filler-signed-integer range"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:84:7: ( 'filler-signed-integer random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:84:9: 'filler-signed-integer random'
+            {
+            match("filler-signed-integer random"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:85:7: ( 'filler-text random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:85:9: 'filler-text random'
+            {
+            match("filler-text random"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:86:7: ( 'filler-text paragraps' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:86:9: 'filler-text paragraps'
+            {
+            match("filler-text paragraps"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:87:7: ( 'filler-text sentences' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:87:9: 'filler-text sentences'
+            {
+            match("filler-text sentences"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:88:7: ( 'filler-text words' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:88:9: 'filler-text words'
+            {
+            match("filler-text words"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:89:7: ( 'filler-unsigned-double range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:89:9: 'filler-unsigned-double range'
+            {
+            match("filler-unsigned-double range"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:90:7: ( 'filler-unsigned-double random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:90:9: 'filler-unsigned-double random'
+            {
+            match("filler-unsigned-double random"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:91:7: ( 'filler-unsigned-integer range' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:91:9: 'filler-unsigned-integer range'
+            {
+            match("filler-unsigned-integer range"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:92:7: ( 'filler-unsigned-integer random' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:92:9: 'filler-unsigned-integer random'
+            {
+            match("filler-unsigned-integer random"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:93:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:93:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:94:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:94:9: ','
+            {
+            match(','); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:95:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:95:9: '='
+            {
+            match('='); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:96:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:96:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:97:7: ( '[' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:98:8: ( ']' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:98:10: ']'
+            {
+            match(']'); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:99:8: ( '+=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:99:10: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:100:8: ( '-=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:100:10: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:101:8: ( '*=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:101:10: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:102:8: ( '/=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:102:10: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:103:8: ( '%=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:103:10: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:104:8: ( '<' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:104:10: '<'
+            {
+            match('<'); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:105:8: ( '>' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:106:8: ( '>=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:107:8: ( '||' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:107:10: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:108:8: ( '&&' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:108:10: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:109:8: ( '==' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:109:10: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:110:8: ( '!=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:110:10: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:111:8: ( '===' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:111:10: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:112:8: ( '!==' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:113:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:113:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:114:8: ( '->' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:114:10: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:115:8: ( '..<' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:115:10: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:116:8: ( '..' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:116:10: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:117:8: ( '=>' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:117:10: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:118:8: ( '<>' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:118:10: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:119:8: ( '?:' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:119:10: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:120:8: ( '**' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:120:10: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:121:8: ( '%' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:121:10: '%'
+            {
+            match('%'); 
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:122:8: ( '!' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:122:10: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:123:8: ( 'as' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:123:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:124:8: ( '++' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:125:8: ( '--' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:126:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:127:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:127:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:128:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:128:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:129:8: ( ';' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:129:10: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:130:8: ( 'if' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:130:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:131:8: ( 'else' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:131:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:132:8: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:132:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:133:8: ( ':' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:133:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:134:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:134:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:135:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:135:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:136:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:136:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:137:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:137:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:138:8: ( 'val' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:138:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "T__141"
+    public final void mT__141() throws RecognitionException {
+        try {
+            int _type = T__141;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:139:8: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:139:10: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:140:8: ( 'static' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:140:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:141:8: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:141:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:142:8: ( 'super' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:142:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:143:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:143:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__145"
+
+    // $ANTLR start "T__146"
+    public final void mT__146() throws RecognitionException {
+        try {
+            int _type = T__146;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:144:8: ( 'false' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:144:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__146"
+
+    // $ANTLR start "T__147"
+    public final void mT__147() throws RecognitionException {
+        try {
+            int _type = T__147;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:145:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:145:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__147"
+
+    // $ANTLR start "T__148"
+    public final void mT__148() throws RecognitionException {
+        try {
+            int _type = T__148;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:146:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:146:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__148"
+
+    // $ANTLR start "T__149"
+    public final void mT__149() throws RecognitionException {
+        try {
+            int _type = T__149;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:147:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:147:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__149"
+
+    // $ANTLR start "T__150"
+    public final void mT__150() throws RecognitionException {
+        try {
+            int _type = T__150;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:148:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:148:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__150"
+
+    // $ANTLR start "T__151"
+    public final void mT__151() throws RecognitionException {
+        try {
+            int _type = T__151;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:149:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:149:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:150:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:150:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:151:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:151:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:152:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:152:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "T__155"
+    public final void mT__155() throws RecognitionException {
+        try {
+            int _type = T__155;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:153:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:153:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "T__156"
+    public final void mT__156() throws RecognitionException {
+        try {
+            int _type = T__156;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:154:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:154:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__156"
+
+    // $ANTLR start "T__157"
+    public final void mT__157() throws RecognitionException {
+        try {
+            int _type = T__157;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:155:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:155:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__157"
+
+    // $ANTLR start "T__158"
+    public final void mT__158() throws RecognitionException {
+        try {
+            int _type = T__158;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:156:8: ( 'rows' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:156:10: 'rows'
+            {
+            match("rows"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__158"
+
+    // $ANTLR start "T__159"
+    public final void mT__159() throws RecognitionException {
+        try {
+            int _type = T__159;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:157:8: ( 'pages' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:157:10: 'pages'
+            {
+            match("pages"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__159"
+
+    // $ANTLR start "T__160"
+    public final void mT__160() throws RecognitionException {
+        try {
+            int _type = T__160;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:158:8: ( 'sections' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:158:10: 'sections'
+            {
+            match("sections"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__160"
+
+    // $ANTLR start "T__161"
+    public final void mT__161() throws RecognitionException {
+        try {
+            int _type = T__161;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:159:8: ( 'chapters' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:159:10: 'chapters'
+            {
+            match("chapters"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__161"
+
+    // $ANTLR start "T__162"
+    public final void mT__162() throws RecognitionException {
+        try {
+            int _type = T__162;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:160:8: ( 'previous' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:160:10: 'previous'
+            {
+            match("previous"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__162"
+
+    // $ANTLR start "T__163"
+    public final void mT__163() throws RecognitionException {
+        try {
+            int _type = T__163;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:161:8: ( 'next' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:161:10: 'next'
+            {
+            match("next"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__163"
+
+    // $ANTLR start "T__164"
+    public final void mT__164() throws RecognitionException {
+        try {
+            int _type = T__164;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:162:8: ( 'first' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:162:10: 'first'
+            {
+            match("first"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__164"
+
+    // $ANTLR start "T__165"
+    public final void mT__165() throws RecognitionException {
+        try {
+            int _type = T__165;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:163:8: ( 'last' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:163:10: 'last'
+            {
+            match("last"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__165"
+
+    // $ANTLR start "T__166"
+    public final void mT__166() throws RecognitionException {
+        try {
+            int _type = T__166;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:164:8: ( 'lag' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:164:10: 'lag'
+            {
+            match("lag"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__166"
+
+    // $ANTLR start "T__167"
+    public final void mT__167() throws RecognitionException {
+        try {
+            int _type = T__167;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:165:8: ( 'lead' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:165:10: 'lead'
+            {
+            match("lead"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__167"
+
+    // $ANTLR start "T__168"
+    public final void mT__168() throws RecognitionException {
+        try {
+            int _type = T__168;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:166:8: ( 'year-to-date' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:166:10: 'year-to-date'
+            {
+            match("year-to-date"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__168"
+
+    // $ANTLR start "T__169"
+    public final void mT__169() throws RecognitionException {
+        try {
+            int _type = T__169;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:167:8: ( 'periods' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:167:10: 'periods'
+            {
+            match("periods"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__169"
+
+    // $ANTLR start "T__170"
+    public final void mT__170() throws RecognitionException {
+        try {
+            int _type = T__170;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:168:8: ( 'tail' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:168:10: 'tail'
+            {
+            match("tail"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__170"
+
+    // $ANTLR start "T__171"
+    public final void mT__171() throws RecognitionException {
+        try {
+            int _type = T__171;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:169:8: ( 'head' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:169:10: 'head'
+            {
+            match("head"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "T__172"
+    public final void mT__172() throws RecognitionException {
+        try {
+            int _type = T__172;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:170:8: ( 'topcount' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:170:10: 'topcount'
+            {
+            match("topcount"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__172"
+
+    // $ANTLR start "T__173"
+    public final void mT__173() throws RecognitionException {
+        try {
+            int _type = T__173;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:171:8: ( 'topsummation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:171:10: 'topsummation'
+            {
+            match("topsummation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__173"
+
+    // $ANTLR start "T__174"
+    public final void mT__174() throws RecognitionException {
+        try {
+            int _type = T__174;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:172:8: ( 'toppercentage' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:172:10: 'toppercentage'
+            {
+            match("toppercentage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__174"
+
+    // $ANTLR start "T__175"
+    public final void mT__175() throws RecognitionException {
+        try {
+            int _type = T__175;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:173:8: ( 'bottomcount' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:173:10: 'bottomcount'
+            {
+            match("bottomcount"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__175"
+
+    // $ANTLR start "T__176"
+    public final void mT__176() throws RecognitionException {
+        try {
+            int _type = T__176;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:174:8: ( 'bottomsummation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:174:10: 'bottomsummation'
+            {
+            match("bottomsummation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__176"
+
+    // $ANTLR start "T__177"
+    public final void mT__177() throws RecognitionException {
+        try {
+            int _type = T__177;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:175:8: ( 'bottompercentage' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:175:10: 'bottompercentage'
+            {
+            match("bottompercentage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__177"
+
+    // $ANTLR start "T__178"
+    public final void mT__178() throws RecognitionException {
+        try {
+            int _type = T__178;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:176:8: ( 'average' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:176:10: 'average'
+            {
+            match("average"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__178"
+
+    // $ANTLR start "T__179"
+    public final void mT__179() throws RecognitionException {
+        try {
+            int _type = T__179;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:177:8: ( 'summation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:177:10: 'summation'
+            {
+            match("summation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__179"
+
+    // $ANTLR start "T__180"
+    public final void mT__180() throws RecognitionException {
+        try {
+            int _type = T__180;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:178:8: ( 'deviation' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:178:10: 'deviation'
+            {
+            match("deviation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__180"
+
+    // $ANTLR start "T__181"
+    public final void mT__181() throws RecognitionException {
+        try {
+            int _type = T__181;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:179:8: ( '<=' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:179:10: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__181"
+
+    // $ANTLR start "T__182"
+    public final void mT__182() throws RecognitionException {
+        try {
+            int _type = T__182;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:180:8: ( 'like' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:180:10: 'like'
+            {
+            match("like"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__182"
+
+    // $ANTLR start "T__183"
+    public final void mT__183() throws RecognitionException {
+        try {
+            int _type = T__183;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:181:8: ( 'count' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:181:10: 'count'
+            {
+            match("count"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__183"
+
+    // $ANTLR start "T__184"
+    public final void mT__184() throws RecognitionException {
+        try {
+            int _type = T__184;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:182:8: ( 'group1' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:182:10: 'group1'
+            {
+            match("group1"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__184"
+
+    // $ANTLR start "T__185"
+    public final void mT__185() throws RecognitionException {
+        try {
+            int _type = T__185;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:183:8: ( 'group2' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:183:10: 'group2'
+            {
+            match("group2"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__185"
+
+    // $ANTLR start "T__186"
+    public final void mT__186() throws RecognitionException {
+        try {
+            int _type = T__186;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:184:8: ( 'group3' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:184:10: 'group3'
+            {
+            match("group3"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__186"
+
+    // $ANTLR start "T__187"
+    public final void mT__187() throws RecognitionException {
+        try {
+            int _type = T__187;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:185:8: ( 'group4' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:185:10: 'group4'
+            {
+            match("group4"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__187"
+
+    // $ANTLR start "T__188"
+    public final void mT__188() throws RecognitionException {
+        try {
+            int _type = T__188;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:186:8: ( 'group5' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:186:10: 'group5'
+            {
+            match("group5"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__188"
+
+    // $ANTLR start "T__189"
+    public final void mT__189() throws RecognitionException {
+        try {
+            int _type = T__189;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:187:8: ( 'group6' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:187:10: 'group6'
+            {
+            match("group6"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__189"
+
+    // $ANTLR start "T__190"
+    public final void mT__190() throws RecognitionException {
+        try {
+            int _type = T__190;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:188:8: ( 'group7' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:188:10: 'group7'
+            {
+            match("group7"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__190"
+
+    // $ANTLR start "T__191"
+    public final void mT__191() throws RecognitionException {
+        try {
+            int _type = T__191;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:189:8: ( 'group8' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:189:10: 'group8'
+            {
+            match("group8"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__191"
+
+    // $ANTLR start "T__192"
+    public final void mT__192() throws RecognitionException {
+        try {
+            int _type = T__192;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:190:8: ( 'group9' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:190:10: 'group9'
+            {
+            match("group9"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__192"
+
+    // $ANTLR start "T__193"
+    public final void mT__193() throws RecognitionException {
+        try {
+            int _type = T__193;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:191:8: ( 'BusinessAdministrator' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:191:10: 'BusinessAdministrator'
+            {
+            match("BusinessAdministrator"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__193"
+
+    // $ANTLR start "T__194"
+    public final void mT__194() throws RecognitionException {
+        try {
+            int _type = T__194;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:192:8: ( 'PotentialOwner' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:192:10: 'PotentialOwner'
+            {
+            match("PotentialOwner"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__194"
+
+    // $ANTLR start "T__195"
+    public final void mT__195() throws RecognitionException {
+        try {
+            int _type = T__195;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:193:8: ( 'Recipient' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:193:10: 'Recipient'
+            {
+            match("Recipient"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__195"
+
+    // $ANTLR start "T__196"
+    public final void mT__196() throws RecognitionException {
+        try {
+            int _type = T__196;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:194:8: ( 'TaskInitiator' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:194:10: 'TaskInitiator'
+            {
+            match("TaskInitiator"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__196"
+
+    // $ANTLR start "T__197"
+    public final void mT__197() throws RecognitionException {
+        try {
+            int _type = T__197;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:195:8: ( 'TaskStakeholder' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:195:10: 'TaskStakeholder'
+            {
+            match("TaskStakeholder"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__197"
+
+    // $ANTLR start "T__198"
+    public final void mT__198() throws RecognitionException {
+        try {
+            int _type = T__198;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:196:8: ( 'ExcludedOwner' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:196:10: 'ExcludedOwner'
+            {
+            match("ExcludedOwner"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__198"
+
+    // $ANTLR start "T__199"
+    public final void mT__199() throws RecognitionException {
+        try {
+            int _type = T__199;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:197:8: ( 'Name' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:197:10: 'Name'
+            {
+            match("Name"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__199"
+
+    // $ANTLR start "T__200"
+    public final void mT__200() throws RecognitionException {
+        try {
+            int _type = T__200;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:198:8: ( 'Priority' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:198:10: 'Priority'
+            {
+            match("Priority"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__200"
+
+    // $ANTLR start "T__201"
+    public final void mT__201() throws RecognitionException {
+        try {
+            int _type = T__201;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:199:8: ( 'Status' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:199:10: 'Status'
+            {
+            match("Status"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__201"
+
+    // $ANTLR start "T__202"
+    public final void mT__202() throws RecognitionException {
+        try {
+            int _type = T__202;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:200:8: ( 'Subject' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:200:10: 'Subject'
+            {
+            match("Subject"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__202"
+
+    // $ANTLR start "T__203"
+    public final void mT__203() throws RecognitionException {
+        try {
+            int _type = T__203;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:201:8: ( 'Description' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:201:10: 'Description'
+            {
+            match("Description"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__203"
+
+    // $ANTLR start "T__204"
+    public final void mT__204() throws RecognitionException {
+        try {
+            int _type = T__204;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:202:8: ( 'ExpirationTime' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:202:10: 'ExpirationTime'
+            {
+            match("ExpirationTime"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__204"
+
+    // $ANTLR start "T__205"
+    public final void mT__205() throws RecognitionException {
+        try {
+            int _type = T__205;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:203:8: ( 'CreatedOn' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:203:10: 'CreatedOn'
+            {
+            match("CreatedOn"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__205"
+
+    // $ANTLR start "T__206"
+    public final void mT__206() throws RecognitionException {
+        try {
+            int _type = T__206;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:204:8: ( 'CreatedBy' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:204:10: 'CreatedBy'
+            {
+            match("CreatedBy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__206"
+
+    // $ANTLR start "T__207"
+    public final void mT__207() throws RecognitionException {
+        try {
+            int _type = T__207;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:205:8: ( 'ActivationTime' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:205:10: 'ActivationTime'
+            {
+            match("ActivationTime"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__207"
+
+    // $ANTLR start "T__208"
+    public final void mT__208() throws RecognitionException {
+        try {
+            int _type = T__208;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:206:8: ( 'ActualOwner' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:206:10: 'ActualOwner'
+            {
+            match("ActualOwner"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__208"
+
+    // $ANTLR start "T__209"
+    public final void mT__209() throws RecognitionException {
+        try {
+            int _type = T__209;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:207:8: ( 'TaskId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:207:10: 'TaskId'
+            {
+            match("TaskId"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__209"
+
+    // $ANTLR start "T__210"
+    public final void mT__210() throws RecognitionException {
+        try {
+            int _type = T__210;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:208:8: ( 'ProcessId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:208:10: 'ProcessId'
+            {
+            match("ProcessId"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__210"
+
+    // $ANTLR start "T__211"
+    public final void mT__211() throws RecognitionException {
+        try {
+            int _type = T__211;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:209:8: ( 'ProcessInstanceId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:209:10: 'ProcessInstanceId'
+            {
+            match("ProcessInstanceId"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__211"
+
+    // $ANTLR start "T__212"
+    public final void mT__212() throws RecognitionException {
+        try {
+            int _type = T__212;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:210:8: ( 'ProcessSessionId' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:210:10: 'ProcessSessionId'
+            {
+            match("ProcessSessionId"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__212"
+
+    // $ANTLR start "T__213"
+    public final void mT__213() throws RecognitionException {
+        try {
+            int _type = T__213;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:211:8: ( 'Groups' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:211:10: 'Groups'
+            {
+            match("Groups"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__213"
+
+    // $ANTLR start "T__214"
+    public final void mT__214() throws RecognitionException {
+        try {
+            int _type = T__214;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:212:8: ( 'Users' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:212:10: 'Users'
+            {
+            match("Users"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__214"
+
+    // $ANTLR start "T__215"
+    public final void mT__215() throws RecognitionException {
+        try {
+            int _type = T__215;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:213:8: ( 'ascending' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:213:10: 'ascending'
+            {
+            match("ascending"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__215"
+
+    // $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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11972: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11974:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11974:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11974: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11976: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11978:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11978:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11978:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11978: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11978: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11980: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11982:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11982:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11982: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11982: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11984: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11986:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11986:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11986: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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11988:16: ( . )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:11988:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | T__190 | T__191 | T__192 | T__193 | T__194 | T__195 | T__196 | T__197 | T__198 | T__199 | T__200 | T__201 | T__202 | T__203 | T__204 | T__205 | T__206 | T__207 | T__208 | T__209 | T__210 | T__211 | T__212 | T__213 | T__214 | T__215 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=212;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:924: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:931: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:938: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:945: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:952: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:959: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:966: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:973: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:980: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 153 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:987: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 154 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:994: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 155 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1001: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 156 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1008: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 157 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1015: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 158 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1022: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 159 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1029: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 160 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1036: T__172
+                {
+                mT__172(); 
+
+                }
+                break;
+            case 161 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1043: T__173
+                {
+                mT__173(); 
+
+                }
+                break;
+            case 162 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1050: T__174
+                {
+                mT__174(); 
+
+                }
+                break;
+            case 163 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1057: T__175
+                {
+                mT__175(); 
+
+                }
+                break;
+            case 164 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1064: T__176
+                {
+                mT__176(); 
+
+                }
+                break;
+            case 165 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1071: T__177
+                {
+                mT__177(); 
+
+                }
+                break;
+            case 166 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1078: T__178
+                {
+                mT__178(); 
+
+                }
+                break;
+            case 167 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1085: T__179
+                {
+                mT__179(); 
+
+                }
+                break;
+            case 168 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1092: T__180
+                {
+                mT__180(); 
+
+                }
+                break;
+            case 169 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1099: T__181
+                {
+                mT__181(); 
+
+                }
+                break;
+            case 170 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1106: T__182
+                {
+                mT__182(); 
+
+                }
+                break;
+            case 171 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1113: T__183
+                {
+                mT__183(); 
+
+                }
+                break;
+            case 172 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1120: T__184
+                {
+                mT__184(); 
+
+                }
+                break;
+            case 173 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1127: T__185
+                {
+                mT__185(); 
+
+                }
+                break;
+            case 174 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1134: T__186
+                {
+                mT__186(); 
+
+                }
+                break;
+            case 175 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1141: T__187
+                {
+                mT__187(); 
+
+                }
+                break;
+            case 176 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1148: T__188
+                {
+                mT__188(); 
+
+                }
+                break;
+            case 177 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1155: T__189
+                {
+                mT__189(); 
+
+                }
+                break;
+            case 178 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1162: T__190
+                {
+                mT__190(); 
+
+                }
+                break;
+            case 179 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1169: T__191
+                {
+                mT__191(); 
+
+                }
+                break;
+            case 180 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1176: T__192
+                {
+                mT__192(); 
+
+                }
+                break;
+            case 181 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1183: T__193
+                {
+                mT__193(); 
+
+                }
+                break;
+            case 182 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1190: T__194
+                {
+                mT__194(); 
+
+                }
+                break;
+            case 183 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1197: T__195
+                {
+                mT__195(); 
+
+                }
+                break;
+            case 184 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1204: T__196
+                {
+                mT__196(); 
+
+                }
+                break;
+            case 185 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1211: T__197
+                {
+                mT__197(); 
+
+                }
+                break;
+            case 186 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1218: T__198
+                {
+                mT__198(); 
+
+                }
+                break;
+            case 187 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1225: T__199
+                {
+                mT__199(); 
+
+                }
+                break;
+            case 188 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1232: T__200
+                {
+                mT__200(); 
+
+                }
+                break;
+            case 189 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1239: T__201
+                {
+                mT__201(); 
+
+                }
+                break;
+            case 190 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1246: T__202
+                {
+                mT__202(); 
+
+                }
+                break;
+            case 191 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1253: T__203
+                {
+                mT__203(); 
+
+                }
+                break;
+            case 192 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1260: T__204
+                {
+                mT__204(); 
+
+                }
+                break;
+            case 193 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1267: T__205
+                {
+                mT__205(); 
+
+                }
+                break;
+            case 194 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1274: T__206
+                {
+                mT__206(); 
+
+                }
+                break;
+            case 195 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1281: T__207
+                {
+                mT__207(); 
+
+                }
+                break;
+            case 196 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1288: T__208
+                {
+                mT__208(); 
+
+                }
+                break;
+            case 197 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1295: T__209
+                {
+                mT__209(); 
+
+                }
+                break;
+            case 198 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1302: T__210
+                {
+                mT__210(); 
+
+                }
+                break;
+            case 199 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1309: T__211
+                {
+                mT__211(); 
+
+                }
+                break;
+            case 200 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1316: T__212
+                {
+                mT__212(); 
+
+                }
+                break;
+            case 201 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1323: T__213
+                {
+                mT__213(); 
+
+                }
+                break;
+            case 202 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1330: T__214
+                {
+                mT__214(); 
+
+                }
+                break;
+            case 203 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1337: T__215
+                {
+                mT__215(); 
+
+                }
+                break;
+            case 204 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1344: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 205 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1353: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 206 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1362: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 207 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1375: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 208 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1383: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 209 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1395: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 210 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1411: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 211 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1427: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 212 :
+                // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1:1435: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\106\2\uffff\15\106\2\uffff\1\174\1\u0080\1\u0083\1\u0087"+
+        "\3\106\1\u0091\2\106\2\uffff\1\u0099\3\uffff\1\u009e\1\u00a1\1\u00a3"+
+        "\1\u00a5\1\u00a7\1\u00a9\1\u00ac\1\u00ae\1\uffff\17\106\2\u00c3"+
+        "\1\102\5\uffff\3\106\3\uffff\2\106\1\u00d3\12\106\1\u00e6\16\106"+
+        "\1\u00fc\2\106\1\u0100\6\106\1\u0108\10\106\20\uffff\7\106\1\u011c"+
+        "\1\u011e\1\uffff\3\106\2\uffff\1\u0123\20\uffff\1\u0125\7\uffff"+
+        "\21\106\1\uffff\1\u00c3\4\uffff\14\106\1\uffff\1\u0146\6\106\1\uffff"+
+        "\10\106\1\u0156\1\106\1\uffff\13\106\1\u0165\11\106\1\uffff\1\106"+
+        "\1\uffff\1\106\1\uffff\4\106\1\u0175\2\106\1\uffff\17\106\1\u0187"+
+        "\3\106\3\uffff\3\106\4\uffff\1\u018e\1\u018f\36\106\1\uffff\1\106"+
+        "\1\u01b2\2\106\1\u01b5\2\106\1\u01b8\1\106\1\u01ba\1\106\1\u01bc"+
+        "\1\u01bd\1\106\1\u01bf\1\uffff\10\106\1\u01c9\1\u01ca\4\106\1\uffff"+
+        "\1\u01cf\1\u01d0\1\u01d1\4\106\1\u01d6\1\106\1\uffff\1\106\1\u01d9"+
+        "\3\106\1\uffff\1\u01dd\14\106\1\u01ea\1\106\1\u01ec\1\u01ed\1\uffff"+
+        "\1\u01ee\2\106\1\u01f1\2\106\2\uffff\12\106\1\u0200\11\106\1\u020a"+
+        "\15\106\1\uffff\1\106\1\u0219\1\uffff\1\u021a\1\u021b\1\uffff\1"+
+        "\106\1\uffff\1\106\2\uffff\1\106\1\uffff\4\106\1\u0223\3\106\1\u0227"+
+        "\2\uffff\1\u0228\3\106\3\uffff\4\106\1\uffff\1\u0233\1\106\2\uffff"+
+        "\2\106\1\uffff\2\106\1\u0239\5\106\1\u023f\3\106\1\uffff\1\u0243"+
+        "\3\uffff\2\106\1\uffff\1\u0246\1\u0247\1\uffff\13\106\1\uffff\7"+
+        "\106\1\u0263\1\106\1\uffff\6\106\1\u026c\4\106\1\u0272\2\106\4\uffff"+
+        "\1\u0276\4\106\1\u027b\1\uffff\1\u027d\2\106\2\uffff\3\106\1\u0283"+
+        "\1\106\1\u0285\4\106\1\uffff\5\106\1\uffff\2\106\1\u0291\1\u0292"+
+        "\1\u0293\1\uffff\3\106\1\uffff\1\u0297\1\106\2\uffff\1\106\1\u029c"+
+        "\1\u029d\1\u029e\1\u029f\1\u02a0\1\u02a1\1\u02a2\1\u02a3\1\u02a4"+
+        "\6\106\1\u02ab\3\106\1\u02af\5\106\1\u02b5\1\uffff\1\u02b6\2\106"+
+        "\1\u02ba\3\106\1\u02be\1\uffff\1\u02bf\4\106\3\uffff\1\u02c8\1\uffff"+
+        "\4\106\1\uffff\1\u02cd\1\uffff\5\106\1\uffff\1\106\1\uffff\1\u02d4"+
+        "\4\106\1\u02d9\2\106\1\u02dc\2\106\3\uffff\3\106\1\uffff\4\106\11"+
+        "\uffff\6\106\1\uffff\3\106\1\uffff\1\u02f0\4\106\2\uffff\1\106\1"+
+        "\u02f7\1\u02f8\1\uffff\1\u02f9\2\106\2\uffff\1\u02fc\1\u02fd\1\106"+
+        "\1\u02ff\5\uffff\1\u0304\1\u0305\2\106\1\uffff\2\106\1\u030a\2\106"+
+        "\1\u030d\1\uffff\1\106\1\u030f\1\uffff\1\u0310\1\uffff\2\106\1\uffff"+
+        "\1\u0313\1\u0314\11\106\1\u031e\7\106\1\uffff\6\106\3\uffff\2\106"+
+        "\2\uffff\1\u032f\7\uffff\2\106\1\u0337\1\u0338\2\uffff\1\106\1\uffff"+
+        "\1\u033a\2\uffff\1\u033b\1\u033c\2\uffff\1\u033d\1\106\1\u033f\6"+
+        "\106\1\uffff\1\u0346\2\106\1\u0349\5\106\1\u034f\1\u0350\2\106\1"+
+        "\u0353\1\uffff\1\u0354\5\uffff\2\106\1\u035b\2\uffff\1\u035c\4\uffff"+
+        "\1\106\1\uffff\1\u035e\5\106\1\uffff\2\106\1\uffff\5\106\2\uffff"+
+        "\2\106\6\uffff\2\106\2\uffff\1\106\1\uffff\1\u0374\12\106\1\u037f"+
+        "\1\106\1\u0381\4\uffff\1\u038b\1\106\1\u038d\1\uffff\12\106\1\uffff"+
+        "\1\106\13\uffff\1\u039b\1\uffff\6\106\1\u03a2\1\106\1\u03a4\2\106"+
+        "\3\uffff\3\106\1\u03ad\2\106\1\uffff\1\106\1\uffff\1\u03b1\1\u03b2"+
+        "\3\uffff\1\u03b6\2\106\1\uffff\2\106\1\u03bb\6\uffff\1\u03c0\2\106"+
+        "\1\u03c3\6\uffff\1\106\1\u03c9\5\uffff\1\106\5\uffff\1\106\4\uffff"+
+        "\1\106\4\uffff\1\u03dd\33\uffff";
+    static final String DFA21_eofS =
+        "\u03f4\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\2\141\1\160\1\145\3\141\1\157\1\154\1\146\1"+
+        "\141\1\147\1\143\2\uffff\1\53\1\55\2\52\1\145\1\141\1\146\1\56\1"+
+        "\150\1\145\2\uffff\1\75\3\uffff\3\75\1\174\1\46\1\75\1\56\1\72\1"+
+        "\uffff\1\141\1\157\1\162\1\165\1\157\1\145\1\141\1\170\1\141\1\164"+
+        "\1\145\1\162\1\143\1\162\1\163\2\60\1\44\5\uffff\1\143\1\145\1\162"+
+        "\3\uffff\1\164\1\143\1\44\1\162\1\154\1\157\1\154\1\151\1\40\1\154"+
+        "\1\164\1\151\1\141\1\44\1\160\1\162\1\154\1\142\1\163\1\141\1\156"+
+        "\1\166\1\167\1\154\1\151\1\164\1\143\1\163\1\44\1\40\1\164\1\44"+
+        "\1\145\1\156\1\141\1\147\1\144\1\151\1\44\1\145\1\141\1\143\2\151"+
+        "\1\141\1\155\1\156\20\uffff\1\145\2\141\1\147\1\153\1\160\1\163"+
+        "\1\44\1\74\1\uffff\1\164\1\151\1\141\2\uffff\1\75\20\uffff\1\75"+
+        "\7\uffff\1\154\1\164\1\157\1\163\1\164\1\151\1\143\1\163\1\143\1"+
+        "\155\1\141\1\142\1\163\1\145\1\164\1\157\1\145\1\uffff\1\60\4\uffff"+
+        "\1\153\1\145\1\160\1\166\1\151\1\141\1\143\1\151\2\141\2\151\1\uffff"+
+        "\1\44\1\154\1\141\1\163\1\155\1\163\1\156\1\uffff\1\145\1\156\1"+
+        "\163\1\165\1\153\1\154\1\143\1\145\1\44\1\143\1\uffff\1\145\1\157"+
+        "\1\165\1\144\1\156\2\145\1\143\1\160\1\145\1\151\1\44\1\164\1\154"+
+        "\1\156\1\151\1\154\4\145\1\uffff\1\40\1\uffff\1\151\1\uffff\1\162"+
+        "\1\171\1\163\1\162\1\44\1\163\1\145\1\uffff\1\162\1\154\1\145\1"+
+        "\164\1\143\2\164\1\145\1\155\1\143\1\162\1\144\1\145\1\144\1\164"+
+        "\1\44\1\145\1\157\1\164\3\uffff\1\150\1\154\1\162\4\uffff\2\44\1"+
+        "\164\1\165\1\151\1\145\1\157\1\143\1\151\1\153\1\154\1\151\1\145"+
+        "\1\164\1\152\1\143\1\141\1\151\1\165\1\162\1\141\1\163\1\145\1\151"+
+        "\1\157\1\155\1\145\1\166\1\165\1\151\1\155\1\141\1\uffff\1\145\1"+
+        "\44\1\154\1\164\1\44\1\145\1\147\1\44\1\144\1\44\1\162\2\44\1\153"+
+        "\1\44\1\uffff\1\157\1\165\1\145\1\157\1\167\1\155\1\145\1\164\2"+
+        "\44\1\150\1\164\1\155\1\147\1\uffff\3\44\1\164\1\157\1\160\1\156"+
+        "\1\44\1\162\1\uffff\1\157\1\44\1\40\1\165\1\145\1\uffff\1\44\1\156"+
+        "\1\141\1\145\1\143\1\151\1\145\1\143\1\151\1\162\1\141\1\150\1\141"+
+        "\1\44\1\154\2\44\1\uffff\1\44\1\162\1\141\1\44\1\145\1\55\2\uffff"+
+        "\1\157\1\160\2\156\1\162\1\145\1\160\1\111\1\165\1\162\1\44\1\165"+
+        "\1\145\1\162\1\164\1\166\1\141\1\160\1\163\1\147\1\44\1\162\1\157"+
+        "\1\144\1\141\1\151\1\156\1\145\2\154\1\141\1\164\2\162\1\uffff\1"+
+        "\154\1\44\1\uffff\2\44\1\uffff\1\40\1\uffff\1\156\2\uffff\1\151"+
+        "\1\uffff\1\165\1\155\1\162\1\146\1\44\1\156\1\164\1\156\1\44\2\uffff"+
+        "\1\44\1\145\1\160\1\141\3\uffff\1\171\1\144\1\164\1\144\1\uffff"+
+        "\1\44\1\156\2\uffff\1\162\1\147\1\uffff\1\144\1\147\1\44\1\164\1"+
+        "\157\1\162\1\150\1\143\1\44\1\164\2\162\1\uffff\1\44\3\uffff\1\164"+
+        "\1\156\1\uffff\2\44\1\uffff\1\155\1\61\1\145\1\164\1\151\1\163\1"+
+        "\151\1\144\1\164\1\144\1\141\1\uffff\1\163\1\143\1\151\1\145\1\141"+
+        "\1\154\1\163\1\44\1\145\1\uffff\1\164\1\165\1\163\1\162\1\142\1"+
+        "\144\1\44\1\164\1\145\1\154\1\151\1\44\1\40\1\171\4\uffff\1\44\2"+
+        "\156\1\155\1\143\1\44\1\uffff\1\44\1\151\1\163\2\uffff\1\162\2\164"+
+        "\1\44\1\145\1\44\1\163\1\151\1\156\1\144\1\uffff\1\141\1\145\1\141"+
+        "\1\151\1\145\1\uffff\1\145\1\156\3\44\1\uffff\1\151\1\157\1\143"+
+        "\1\uffff\1\44\1\143\2\uffff\1\143\11\44\1\163\1\151\1\164\1\163"+
+        "\1\145\1\151\1\44\1\141\1\145\1\164\1\44\1\164\1\160\1\144\1\164"+
+        "\1\117\1\44\1\uffff\1\44\1\151\1\163\1\44\1\164\1\145\1\151\1\44"+
+        "\1\uffff\1\44\1\144\1\163\1\157\1\144\2\uffff\1\144\1\44\1\uffff"+
+        "\1\147\1\164\1\141\1\145\1\uffff\1\44\1\uffff\1\157\1\145\1\163"+
+        "\1\171\1\151\1\uffff\1\144\1\uffff\1\44\1\157\1\147\1\40\1\154\1"+
+        "\44\1\164\1\156\1\44\1\144\1\163\3\uffff\1\157\1\156\1\150\1\uffff"+
+        "\1\145\1\157\1\165\1\145\11\uffff\1\163\1\141\1\171\1\111\1\156"+
+        "\1\164\1\uffff\1\153\1\144\1\151\1\uffff\1\44\1\164\1\102\1\151"+
+        "\1\167\2\uffff\1\145\2\44\1\uffff\1\44\1\144\1\156\2\uffff\2\44"+
+        "\1\156\1\44\1\141\1\151\1\145\1\156\1\uffff\2\44\1\164\1\156\1\uffff"+
+        "\1\156\1\144\1\44\1\40\1\157\1\44\1\uffff\1\156\1\44\1\uffff\1\44"+
+        "\1\uffff\1\145\1\147\1\uffff\2\44\1\156\1\151\1\171\1\157\1\165"+
+        "\1\155\1\162\1\101\1\154\1\44\1\144\1\145\1\164\1\151\1\145\1\117"+
+        "\1\157\1\uffff\1\151\1\156\1\171\1\157\1\156\1\163\3\uffff\1\40"+
+        "\1\147\2\uffff\1\44\1\uffff\1\164\1\147\1\170\1\163\2\uffff\1\151"+
+        "\1\164\2\44\2\uffff\1\156\1\uffff\1\44\2\uffff\2\44\2\uffff\1\44"+
+        "\1\172\1\44\1\146\1\156\1\155\1\143\1\144\1\117\1\uffff\1\44\2\163"+
+        "\1\44\1\141\1\150\1\167\1\156\1\157\2\44\1\156\1\145\1\44\1\uffff"+
+        "\1\44\1\uffff\1\145\1\156\1\164\1\151\1\157\1\141\1\44\2\uffff\1"+
+        "\44\4\uffff\1\145\1\uffff\1\44\1\164\1\141\1\145\1\155\1\167\1\uffff"+
+        "\1\164\1\163\1\uffff\1\164\1\157\1\156\1\124\1\156\2\uffff\1\124"+
+        "\1\162\2\uffff\1\40\1\145\1\40\1\147\1\156\1\147\2\uffff\1\144\1"+
+        "\uffff\1\44\1\164\1\156\1\151\1\156\1\141\1\151\1\157\1\154\1\145"+
+        "\1\151\1\44\1\151\1\44\1\146\1\144\1\160\1\156\1\44\1\145\1\44\1"+
+        "\uffff\1\151\1\164\1\156\1\145\1\156\1\157\1\162\1\144\1\162\1\155"+
+        "\1\uffff\1\155\4\uffff\1\55\4\uffff\1\145\1\uffff\1\44\1\uffff\1"+
+        "\157\1\141\1\151\1\162\1\143\1\156\1\44\1\145\1\44\2\145\2\144\1"+
+        "\uffff\1\156\1\147\1\163\1\44\1\145\1\111\1\uffff\1\162\1\uffff"+
+        "\2\44\1\157\1\156\1\55\1\44\1\145\1\164\1\uffff\1\111\1\144\1\44"+
+        "\2\uffff\1\165\1\164\1\144\1\uffff\1\44\1\162\1\144\1\44\1\uffff"+
+        "\1\142\1\145\1\157\1\156\1\uffff\1\141\1\44\1\uffff\1\154\1\147"+
+        "\1\165\2\164\1\uffff\2\145\1\142\1\145\1\157\1\40\1\162\1\154\1"+
+        "\147\2\162\1\40\2\145\1\44\1\141\1\162\1\40\1\162\1\uffff\1\156"+
+        "\1\141\1\162\1\40\1\144\1\156\1\141\1\162\2\uffff\1\144\1\156\1"+
+        "\141\2\uffff\1\144\1\156\2\uffff\1\144\2\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\162\2\uffff\1\157\1\162\1\163\1\157\1\171\2\165\1\157"+
+        "\1\170\1\166\1\145\1\170\1\171\2\uffff\1\75\1\76\2\75\2\151\1\156"+
+        "\1\56\1\151\1\145\2\uffff\1\76\3\uffff\1\75\1\76\1\75\1\174\1\46"+
+        "\1\75\2\72\1\uffff\1\141\1\157\1\162\1\165\1\162\1\145\1\141\1\170"+
+        "\1\141\1\165\1\145\1\162\1\143\1\162\1\163\1\170\1\154\1\172\5\uffff"+
+        "\1\147\1\157\1\162\3\uffff\1\164\1\166\1\172\2\162\1\157\1\154\1"+
+        "\151\1\40\1\167\1\164\1\163\1\171\1\172\1\160\1\162\1\165\1\142"+
+        "\1\164\1\141\1\156\1\166\1\170\1\154\1\151\2\164\1\163\1\172\1\145"+
+        "\1\164\1\172\1\145\1\156\1\141\1\147\1\144\1\151\1\172\1\145\1\141"+
+        "\1\154\2\151\1\141\1\160\1\156\20\uffff\1\145\1\141\1\166\1\163"+
+        "\1\153\1\160\1\163\1\172\1\74\1\uffff\1\164\1\151\1\141\2\uffff"+
+        "\1\75\20\uffff\1\75\7\uffff\1\162\1\164\1\157\1\163\1\164\1\157"+
+        "\1\143\1\163\1\160\1\155\1\141\1\142\1\163\1\145\1\164\1\157\1\145"+
+        "\1\uffff\1\154\4\uffff\1\153\1\145\1\160\1\166\1\151\1\141\1\143"+
+        "\1\151\2\141\2\151\1\uffff\1\172\1\164\1\141\1\163\1\155\1\163\1"+
+        "\156\1\uffff\1\145\1\156\1\163\1\165\1\153\1\154\1\143\1\145\1\172"+
+        "\1\163\1\uffff\1\145\1\157\1\165\1\144\1\156\2\145\1\143\1\160\1"+
+        "\145\1\151\1\172\1\164\1\154\1\156\1\151\1\154\4\145\1\uffff\1\40"+
+        "\1\uffff\1\151\1\uffff\1\162\1\171\1\163\1\162\1\172\1\163\1\145"+
+        "\1\uffff\1\162\1\154\1\145\1\164\1\143\2\164\1\145\1\155\1\143\1"+
+        "\162\1\144\1\145\1\144\1\164\1\172\1\145\1\157\1\164\3\uffff\1\150"+
+        "\1\154\1\162\4\uffff\2\172\1\164\1\165\1\151\1\145\1\157\1\143\1"+
+        "\151\1\153\1\154\1\151\1\145\1\164\1\152\1\143\1\141\2\165\1\162"+
+        "\1\141\1\163\1\145\1\151\1\157\1\155\1\162\1\166\1\165\1\151\1\155"+
+        "\1\141\1\uffff\1\145\1\172\1\154\1\164\1\172\1\145\1\147\1\172\1"+
+        "\144\1\172\1\162\2\172\1\153\1\172\1\uffff\1\157\1\165\1\145\1\157"+
+        "\1\167\1\155\1\151\1\164\2\172\1\150\1\164\1\155\1\147\1\uffff\3"+
+        "\172\1\164\1\157\1\160\1\156\1\172\1\162\1\uffff\1\157\1\172\1\40"+
+        "\1\165\1\145\1\uffff\1\172\1\156\1\141\1\145\1\143\1\151\1\145\1"+
+        "\143\1\151\1\162\1\141\1\150\1\141\1\172\1\154\2\172\1\uffff\1\172"+
+        "\1\162\1\141\1\172\1\145\1\163\2\uffff\1\157\1\160\2\156\1\162\1"+
+        "\145\1\160\1\123\1\165\1\162\1\172\1\165\1\145\1\162\1\164\1\166"+
+        "\1\141\1\160\1\163\1\147\1\172\1\162\1\157\1\144\1\141\1\151\1\156"+
+        "\1\145\2\154\1\141\1\164\2\162\1\uffff\1\154\1\172\1\uffff\2\172"+
+        "\1\uffff\1\40\1\uffff\1\156\2\uffff\1\151\1\uffff\1\165\1\155\1"+
+        "\162\1\146\1\172\1\156\1\164\1\156\1\172\2\uffff\1\172\1\145\1\160"+
+        "\1\141\3\uffff\1\171\1\144\1\164\1\163\1\uffff\1\172\1\156\2\uffff"+
+        "\1\162\1\147\1\uffff\1\144\1\147\1\172\1\164\1\157\1\162\1\150\1"+
+        "\143\1\172\1\164\2\162\1\uffff\1\172\3\uffff\1\164\1\156\1\uffff"+
+        "\2\172\1\uffff\1\155\1\71\1\145\1\164\1\151\1\163\1\151\1\156\1"+
+        "\164\1\144\1\141\1\uffff\1\163\1\143\1\151\1\145\1\141\1\154\1\163"+
+        "\1\172\1\145\1\uffff\1\164\1\165\1\163\1\162\1\142\1\144\1\172\1"+
+        "\164\1\145\1\154\1\151\1\172\1\55\1\171\4\uffff\1\172\2\156\1\155"+
+        "\1\143\1\172\1\uffff\1\172\1\151\1\163\2\uffff\1\162\2\164\1\172"+
+        "\1\145\1\172\1\163\1\151\1\156\1\144\1\uffff\1\141\1\145\1\141\1"+
+        "\151\1\145\1\uffff\1\145\1\156\3\172\1\uffff\1\151\1\157\1\143\1"+
+        "\uffff\1\172\1\143\2\uffff\1\163\11\172\1\163\1\151\1\164\1\163"+
+        "\1\145\1\151\1\172\1\141\1\145\1\164\1\172\1\164\1\160\1\144\1\164"+
+        "\1\117\1\172\1\uffff\1\172\1\171\1\163\1\172\1\164\1\145\1\151\1"+
+        "\172\1\uffff\1\172\1\144\1\163\1\157\1\144\2\uffff\1\165\1\172\1"+
+        "\uffff\1\147\1\164\1\141\1\145\1\uffff\1\172\1\uffff\1\157\1\145"+
+        "\1\163\1\171\1\151\1\uffff\1\144\1\uffff\1\172\1\157\1\147\1\40"+
+        "\1\154\1\172\1\164\1\156\1\172\1\144\1\163\3\uffff\1\157\1\156\1"+
+        "\150\1\uffff\1\145\1\157\1\165\1\145\11\uffff\1\163\1\141\1\171"+
+        "\1\123\1\156\1\164\1\uffff\1\153\1\144\1\151\1\uffff\1\172\1\164"+
+        "\1\117\1\151\1\167\2\uffff\1\145\2\172\1\uffff\1\172\1\144\1\156"+
+        "\2\uffff\2\172\1\156\1\172\1\141\1\151\1\145\1\156\1\uffff\2\172"+
+        "\1\164\1\156\1\uffff\1\156\1\144\1\172\1\40\1\157\1\172\1\uffff"+
+        "\1\156\1\172\1\uffff\1\172\1\uffff\1\145\1\147\1\uffff\2\172\1\156"+
+        "\1\151\1\171\1\157\1\165\1\155\1\162\1\101\1\154\1\172\1\156\1\145"+
+        "\1\164\1\151\1\145\1\117\1\157\1\uffff\1\151\1\156\1\171\1\157\1"+
+        "\156\1\163\3\uffff\1\40\1\147\2\uffff\1\172\1\uffff\1\164\1\147"+
+        "\1\170\1\163\2\uffff\1\151\1\164\2\172\2\uffff\1\156\1\uffff\1\172"+
+        "\2\uffff\2\172\2\uffff\3\172\1\146\1\156\1\155\1\143\1\144\1\117"+
+        "\1\uffff\1\172\2\163\1\172\1\141\1\150\1\167\1\156\1\157\2\172\1"+
+        "\156\1\145\1\172\1\uffff\1\172\1\uffff\1\145\1\156\1\164\1\151\1"+
+        "\157\1\141\1\172\2\uffff\1\172\4\uffff\1\145\1\uffff\1\172\1\164"+
+        "\1\141\1\145\1\155\1\167\1\uffff\1\164\1\163\1\uffff\1\164\1\157"+
+        "\1\156\1\124\1\156\2\uffff\1\124\1\162\2\uffff\1\40\1\145\1\40\1"+
+        "\147\1\156\1\147\2\uffff\1\144\1\uffff\1\172\1\164\1\156\1\151\1"+
+        "\156\1\141\1\151\1\157\1\154\1\145\1\151\1\172\1\151\1\172\1\162"+
+        "\1\144\1\167\1\156\1\172\1\145\1\172\1\uffff\1\151\1\164\1\156\1"+
+        "\145\1\156\1\157\1\162\1\144\1\162\1\155\1\uffff\1\155\4\uffff\1"+
+        "\55\4\uffff\1\145\1\uffff\1\172\1\uffff\1\157\1\141\1\151\1\162"+
+        "\1\143\1\156\1\172\1\145\1\172\2\145\1\151\1\144\1\uffff\1\156\1"+
+        "\147\1\163\1\172\1\145\1\111\1\uffff\1\162\1\uffff\2\172\1\157\1"+
+        "\156\1\55\1\172\1\145\1\164\1\uffff\1\111\1\144\1\172\2\uffff\1"+
+        "\165\1\164\1\151\1\uffff\1\172\1\162\1\144\1\172\1\uffff\1\142\1"+
+        "\145\1\157\1\156\1\uffff\1\141\1\172\1\uffff\1\154\1\147\1\165\2"+
+        "\164\1\uffff\2\145\1\142\1\145\1\157\1\40\1\162\1\154\1\147\2\162"+
+        "\1\40\2\145\1\172\1\141\1\162\1\40\1\162\1\uffff\1\156\1\141\1\162"+
+        "\1\40\1\147\1\156\1\141\1\162\2\uffff\1\147\1\156\1\141\2\uffff"+
+        "\1\147\1\156\2\uffff\1\147\2\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\15\uffff\1\42\1\43\12\uffff\1\123\1\124\1\uffff"+
+        "\1\126\1\127\1\130\10\uffff\1\167\22\uffff\1\u00cf\2\u00d0\1\u00d3"+
+        "\1\u00d4\3\uffff\1\u00cf\1\2\1\3\57\uffff\1\42\1\43\1\131\1\162"+
+        "\1\51\1\132\1\150\1\163\1\52\1\133\1\156\1\53\1\134\1\u00d1\1\u00d2"+
+        "\1\54\11\uffff\1\75\3\uffff\1\123\1\124\1\uffff\1\153\1\125\1\126"+
+        "\1\127\1\130\1\135\1\157\1\154\1\u00a9\1\136\1\140\1\137\1\141\1"+
+        "\166\1\142\1\u0091\1\uffff\1\160\1\155\1\165\1\u0090\1\164\1\173"+
+        "\1\167\21\uffff\1\u00cc\1\uffff\1\u00cd\1\u00ce\1\u00d0\1\u00d3"+
+        "\14\uffff\1\176\7\uffff\1\104\12\uffff\1\27\25\uffff\1\40\1\uffff"+
+        "\1\34\1\uffff\1\55\7\uffff\1\161\23\uffff\1\170\1\151\1\152\3\uffff"+
+        "\1\145\1\143\1\146\1\144\40\uffff\1\6\17\uffff\1\u008c\16\uffff"+
+        "\1\u0085\11\uffff\1\31\5\uffff\1\41\21\uffff\1\u009a\6\uffff\1\177"+
+        "\1\u0080\42\uffff\1\76\2\uffff\1\50\2\uffff\1\10\1\uffff\1\u0092"+
+        "\1\uffff\1\11\1\u009e\1\uffff\1\u0087\11\uffff\1\16\1\174\4\uffff"+
+        "\1\u0097\1\u0088\1\20\4\uffff\1\171\2\uffff\1\56\1\30\2\uffff\1"+
+        "\60\14\uffff\1\u009f\1\uffff\1\u009b\1\u0099\1\u00aa\2\uffff\1\77"+
+        "\2\uffff\1\u009c\13\uffff\1\u00bb\11\uffff\1\u0093\16\uffff\1\u0098"+
+        "\1\u0086\1\7\1\107\6\uffff\1\u008a\3\uffff\1\u00ab\1\u008f\12\uffff"+
+        "\1\37\5\uffff\1\35\5\uffff\1\u0084\3\uffff\1\67\2\uffff\1\175\1"+
+        "\101\33\uffff\1\u00ca\10\uffff\1\47\5\uffff\1\15\1\26\2\uffff\1"+
+        "\u008b\4\uffff\1\u0089\1\uffff\1\14\5\uffff\1\21\1\uffff\1\71\13"+
+        "\uffff\1\57\1\172\1\u0082\3\uffff\1\74\4\uffff\1\u00ac\1\u00ad\1"+
+        "\u00ae\1\u00af\1\u00b0\1\u00b1\1\u00b2\1\u00b3\1\u00b4\6\uffff\1"+
+        "\u00c5\3\uffff\1\u00bd\5\uffff\1\u00c9\1\1\3\uffff\1\u009d\3\uffff"+
+        "\1\61\1\64\10\uffff\1\u008d\4\uffff\1\12\6\uffff\1\u0081\2\uffff"+
+        "\1\72\1\uffff\1\62\2\uffff\1\u00a6\23\uffff\1\u00be\6\uffff\1\32"+
+        "\1\u0096\1\4\2\uffff\1\70\1\106\1\uffff\1\44\4\uffff\1\22\1\u00a0"+
+        "\4\uffff\1\u0095\1\17\1\uffff\1\66\1\uffff\1\25\1\45\2\uffff\1\46"+
+        "\1\u0094\11\uffff\1\u00bc\16\uffff\1\5\1\uffff\1\u00a8\7\uffff\1"+
+        "\36\1\65\1\uffff\1\u0083\1\33\1\u00cb\1\u00a7\1\uffff\1\63\6\uffff"+
+        "\1\u00c6\2\uffff\1\u00b7\5\uffff\1\u00c1\1\u00c2\2\uffff\1\24\1"+
+        "\73\6\uffff\1\13\1\23\1\uffff\1\147\25\uffff\1\u00a3\12\uffff\1"+
+        "\u00bf\1\uffff\1\u00c4\1\100\1\102\1\103\1\uffff\1\113\1\114\1\115"+
+        "\1\116\1\uffff\1\u00a1\1\uffff\1\u008e\15\uffff\1\u00a2\6\uffff"+
+        "\1\u00b8\1\uffff\1\u00ba\10\uffff\1\u00b6\3\uffff\1\u00c0\1\u00c3"+
+        "\3\uffff\1\u00a4\4\uffff\1\u00b9\4\uffff\1\u00a5\2\uffff\1\u00c8"+
+        "\5\uffff\1\u00c7\23\uffff\1\u00b5\10\uffff\1\105\1\110\3\uffff\1"+
+        "\111\1\112\2\uffff\1\117\1\120\1\uffff\1\121\1\122";
+    static final String DFA21_specialS =
+        "\1\0\u03f3\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\102\2\101\2\102\1\101\22\102\1\101\1\50\1\77\1\40\1\76"+
+            "\1\43\1\47\1\100\1\21\1\22\1\25\1\23\1\36\1\24\1\32\1\26\1\73"+
+            "\11\74\1\52\1\53\1\44\1\37\1\45\1\51\1\35\1\70\1\57\1\67\1\66"+
+            "\1\63\1\76\1\71\6\76\1\64\1\76\1\60\1\76\1\61\1\65\1\62\1\72"+
+            "\5\76\1\41\1\102\1\42\1\75\1\76\1\102\1\17\1\55\1\11\1\4\1\14"+
+            "\1\5\1\56\1\27\1\31\1\13\1\76\1\30\1\16\1\12\1\15\1\1\1\76\1"+
+            "\7\1\20\1\10\1\6\1\54\1\33\1\76\1\34\1\76\1\2\1\46\1\3\uff82"+
+            "\102",
+            "\1\103\3\uffff\1\105\14\uffff\1\104",
+            "",
+            "",
+            "\1\111\3\uffff\1\112\11\uffff\1\113",
+            "\1\117\7\uffff\1\115\5\uffff\1\114\2\uffff\1\116",
+            "\1\121\2\uffff\1\120",
+            "\1\123\11\uffff\1\122",
+            "\1\124\6\uffff\1\130\6\uffff\1\126\2\uffff\1\125\6\uffff\1"+
+            "\127",
+            "\1\133\6\uffff\1\134\6\uffff\1\131\5\uffff\1\132",
+            "\1\136\3\uffff\1\137\11\uffff\1\135\5\uffff\1\140",
+            "\1\141",
+            "\1\144\1\uffff\1\142\11\uffff\1\143",
+            "\1\150\7\uffff\1\146\1\uffff\1\147\1\uffff\1\145\3\uffff\1"+
+            "\151",
+            "\1\152\3\uffff\1\153",
+            "\1\154\6\uffff\1\155\4\uffff\1\157\2\uffff\1\160\1\uffff\1"+
+            "\156",
+            "\1\161\1\uffff\1\162\6\uffff\1\163\7\uffff\1\165\1\166\1\uffff"+
+            "\1\164\1\uffff\1\167",
+            "",
+            "",
+            "\1\173\21\uffff\1\172",
+            "\1\177\17\uffff\1\175\1\176",
+            "\1\u0082\22\uffff\1\u0081",
+            "\1\u0085\4\uffff\1\u0086\15\uffff\1\u0084",
+            "\1\u0089\3\uffff\1\u0088",
+            "\1\u008b\3\uffff\1\u008a\3\uffff\1\u008c",
+            "\1\u008f\6\uffff\1\u008d\1\u008e",
+            "\1\u0090",
+            "\1\u0093\1\u0092",
+            "\1\u0094",
+            "",
+            "",
+            "\1\u0097\1\u0098",
+            "",
+            "",
+            "",
+            "\1\u009d",
+            "\1\u00a0\1\u009f",
+            "\1\u00a2",
+            "\1\u00a4",
+            "\1\u00a6",
+            "\1\u00a8",
+            "\1\u00ab\13\uffff\1\u00aa",
+            "\1\u00ad",
+            "",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4\2\uffff\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\12\u00c2\10\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1\u00c4"+
+            "\13\uffff\1\u00c1\6\uffff\1\u00c2\2\uffff\1\u00c4\1\uffff\3"+
+            "\u00c4\5\uffff\1\u00c4\13\uffff\1\u00c1",
+            "\12\u00c2\10\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1\u00c4"+
+            "\22\uffff\1\u00c2\2\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1"+
+            "\u00c4",
+            "\1\106\34\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c7\3\uffff\1\u00c8",
+            "\1\u00ca\11\uffff\1\u00c9",
+            "\1\u00cb",
+            "",
+            "",
+            "",
+            "\1\u00cc",
+            "\1\u00d1\2\uffff\1\u00cf\13\uffff\1\u00ce\1\u00cd\1\u00d0"+
+            "\1\uffff\1\u00d2",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u00d4",
+            "\1\u00d5\1\uffff\1\u00d6\3\uffff\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc\10\uffff\1\u00dd\1\uffff\1\u00de",
+            "\1\u00df",
+            "\1\u00e1\11\uffff\1\u00e0",
+            "\1\u00e2\23\uffff\1\u00e3\3\uffff\1\u00e4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\17\106\1\u00e5\12\106",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9\1\uffff\1\u00ea\6\uffff\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1",
+            "\1\u00f2\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f8\14\uffff\1\u00f7\3\uffff\1\u00f9",
+            "\1\u00fa",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\3\106\1\u00fb\26\106",
+            "\1\u00fe\104\uffff\1\u00fd",
+            "\1\u00ff",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\2\106\1\u0107\27\106",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010c\10\uffff\1\u010b",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0111\2\uffff\1\u0110",
+            "\1\u0112",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0116\24\uffff\1\u0115",
+            "\1\u0118\13\uffff\1\u0117",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u011d",
+            "",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "",
+            "",
+            "\1\u0122",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0124",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0127\5\uffff\1\u0126",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c\5\uffff\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130\14\uffff\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "",
+            "\12\u00c2\10\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1\u00c4"+
+            "\22\uffff\1\u00c2\2\uffff\1\u00c4\1\uffff\3\u00c4\5\uffff\1"+
+            "\u00c4",
+            "",
+            "",
+            "",
+            "",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0148\7\uffff\1\u0147",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0157\14\uffff\1\u0159\2\uffff\1\u0158",
+            "",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "",
+            "\1\u016f",
+            "",
+            "\1\u0170",
+            "",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0176",
+            "\1\u0177",
+            "",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "",
+            "",
+            "",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\u019f\13\uffff\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01aa\14\uffff\1\u01a9",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "",
+            "\1\u01b0",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\4\106\1\u01b1\25\106",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01b9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01bb",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01be",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c7\3\uffff\1\u01c6",
+            "\1\u01c8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01d7",
+            "",
+            "\1\u01d8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01eb",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u01f2",
+            "\1\u01f4\105\uffff\1\u01f3",
+            "",
+            "",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc\11\uffff\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\u0210",
+            "\1\u0211",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "\1\u0216",
+            "\1\u0217",
+            "",
+            "\1\u0218",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u021c",
+            "",
+            "\1\u021d",
+            "",
+            "",
+            "\1\u021e",
+            "",
+            "\1\u021f",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0229",
+            "\1\u022a",
+            "\1\u022b",
+            "",
+            "",
+            "",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\u022e",
+            "\1\u022f\16\uffff\1\u0230",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\4\106\1\u0232\3\106\1\u0231\21\106",
+            "\1\u0234",
+            "",
+            "",
+            "\1\u0235",
+            "\1\u0236",
+            "",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0240",
+            "\1\u0241",
+            "\1\u0242",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "",
+            "\1\u0244",
+            "\1\u0245",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u0248",
+            "\1\u0249\1\u024a\1\u024b\1\u024c\1\u024d\1\u024e\1\u024f\1"+
+            "\u0250\1\u0251",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\u0255",
+            "\1\u0256",
+            "\1\u0258\11\uffff\1\u0257",
+            "\1\u0259",
+            "\1\u025a",
+            "\1\u025b",
+            "",
+            "\1\u025c",
+            "\1\u025d",
+            "\1\u025e",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261",
+            "\1\u0262",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0264",
+            "",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\u0267",
+            "\1\u0268",
+            "\1\u0269",
+            "\1\u026a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\3\106\1\u026b\26\106",
+            "\1\u026d",
+            "\1\u026e",
+            "\1\u026f",
+            "\1\u0270",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\4\106\1\u0271\25\106",
+            "\1\u0273\14\uffff\1\u0274",
+            "\1\u0275",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0277",
+            "\1\u0278",
+            "\1\u0279",
+            "\1\u027a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\22\106\1\u027c\7\106",
+            "\1\u027e",
+            "\1\u027f",
+            "",
+            "",
+            "\1\u0280",
+            "\1\u0281",
+            "\1\u0282",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0284",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0286",
+            "\1\u0287",
+            "\1\u0288",
+            "\1\u0289",
+            "",
+            "\1\u028a",
+            "\1\u028b",
+            "\1\u028c",
+            "\1\u028d",
+            "\1\u028e",
+            "",
+            "\1\u028f",
+            "\1\u0290",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u0294",
+            "\1\u0295",
+            "\1\u0296",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0298",
+            "",
+            "",
+            "\1\u0299\14\uffff\1\u029b\2\uffff\1\u029a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02a5",
+            "\1\u02a6",
+            "\1\u02a7",
+            "\1\u02a8",
+            "\1\u02a9",
+            "\1\u02aa",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02ac",
+            "\1\u02ad",
+            "\1\u02ae",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02b0",
+            "\1\u02b1",
+            "\1\u02b2",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02b7\17\uffff\1\u02b8",
+            "\1\u02b9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02bb",
+            "\1\u02bc",
+            "\1\u02bd",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02c0",
+            "\1\u02c1",
+            "\1\u02c2",
+            "\1\u02c3",
+            "",
+            "",
+            "\1\u02c4\16\uffff\1\u02c5\1\u02c6\1\u02c7",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u02c9",
+            "\1\u02ca",
+            "\1\u02cb",
+            "\1\u02cc",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u02ce",
+            "\1\u02cf",
+            "\1\u02d0",
+            "\1\u02d1",
+            "\1\u02d2",
+            "",
+            "\1\u02d3",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02d5",
+            "\1\u02d6",
+            "\1\u02d7",
+            "\1\u02d8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02da",
+            "\1\u02db",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02dd",
+            "\1\u02de",
+            "",
+            "",
+            "",
+            "\1\u02df",
+            "\1\u02e0",
+            "\1\u02e1",
+            "",
+            "\1\u02e2",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02e6",
+            "\1\u02e7",
+            "\1\u02e8",
+            "\1\u02e9\11\uffff\1\u02ea",
+            "\1\u02eb",
+            "\1\u02ec",
+            "",
+            "\1\u02ed",
+            "\1\u02ee",
+            "\1\u02ef",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02f1",
+            "\1\u02f3\14\uffff\1\u02f2",
+            "\1\u02f4",
+            "\1\u02f5",
+            "",
+            "",
+            "\1\u02f6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02fa",
+            "\1\u02fb",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u02fe",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0300",
+            "\1\u0301",
+            "\1\u0302",
+            "\1\u0303",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0306",
+            "\1\u0307",
+            "",
+            "\1\u0308",
+            "\1\u0309",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u030b",
+            "\1\u030c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u030e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u0311",
+            "\1\u0312",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0315",
+            "\1\u0316",
+            "\1\u0317",
+            "\1\u0318",
+            "\1\u0319",
+            "\1\u031a",
+            "\1\u031b",
+            "\1\u031c",
+            "\1\u031d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u031f\11\uffff\1\u0320",
+            "\1\u0321",
+            "\1\u0322",
+            "\1\u0323",
+            "\1\u0324",
+            "\1\u0325",
+            "\1\u0326",
+            "",
+            "\1\u0327",
+            "\1\u0328",
+            "\1\u0329",
+            "\1\u032a",
+            "\1\u032b",
+            "\1\u032c",
+            "",
+            "",
+            "",
+            "\1\u032d",
+            "\1\u032e",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u0330",
+            "\1\u0331",
+            "\1\u0332",
+            "\1\u0333",
+            "",
+            "",
+            "\1\u0334",
+            "\1\u0335",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\22\106\1\u0336\7\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "\1\u0339",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u033e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0340",
+            "\1\u0341",
+            "\1\u0342",
+            "\1\u0343",
+            "\1\u0344",
+            "\1\u0345",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0347",
+            "\1\u0348",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u034a",
+            "\1\u034b",
+            "\1\u034c",
+            "\1\u034d",
+            "\1\u034e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0351",
+            "\1\u0352",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u0355",
+            "\1\u0356",
+            "\1\u0357",
+            "\1\u0358",
+            "\1\u0359",
+            "\1\u035a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "",
+            "",
+            "\1\u035d",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u035f",
+            "\1\u0360",
+            "\1\u0361",
+            "\1\u0362",
+            "\1\u0363",
+            "",
+            "\1\u0364",
+            "\1\u0365",
+            "",
+            "\1\u0366",
+            "\1\u0367",
+            "\1\u0368",
+            "\1\u0369",
+            "\1\u036a",
+            "",
+            "",
+            "\1\u036b",
+            "\1\u036c",
+            "",
+            "",
+            "\1\u036d",
+            "\1\u036e",
+            "\1\u036f",
+            "\1\u0370",
+            "\1\u0371",
+            "\1\u0372",
+            "",
+            "",
+            "\1\u0373",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0375",
+            "\1\u0376",
+            "\1\u0377",
+            "\1\u0378",
+            "\1\u0379",
+            "\1\u037a",
+            "\1\u037b",
+            "\1\u037c",
+            "\1\u037d",
+            "\1\u037e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0380",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u0382\11\uffff\1\u0383\1\uffff\1\u0384",
+            "\1\u0385",
+            "\1\u0387\1\uffff\1\u0386\1\u0388\3\uffff\1\u0389",
+            "\1\u038a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u038c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u038e",
+            "\1\u038f",
+            "\1\u0390",
+            "\1\u0391",
+            "\1\u0392",
+            "\1\u0393",
+            "\1\u0394",
+            "\1\u0395",
+            "\1\u0396",
+            "\1\u0397",
+            "",
+            "\1\u0398",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0399",
+            "",
+            "",
+            "",
+            "",
+            "\1\u039a",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u039c",
+            "\1\u039d",
+            "\1\u039e",
+            "\1\u039f",
+            "\1\u03a0",
+            "\1\u03a1",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03a3",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03a5",
+            "\1\u03a6",
+            "\1\u03a7\4\uffff\1\u03a8",
+            "\1\u03a9",
+            "",
+            "\1\u03aa",
+            "\1\u03ab",
+            "\1\u03ac",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03ae",
+            "\1\u03af",
+            "",
+            "\1\u03b0",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03b3",
+            "\1\u03b4",
+            "\1\u03b5",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03b7",
+            "\1\u03b8",
+            "",
+            "\1\u03b9",
+            "\1\u03ba",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "",
+            "\1\u03bc",
+            "\1\u03bd",
+            "\1\u03be\4\uffff\1\u03bf",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03c1",
+            "\1\u03c2",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u03c4",
+            "\1\u03c5",
+            "\1\u03c6",
+            "\1\u03c7",
+            "",
+            "\1\u03c8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "",
+            "\1\u03ca",
+            "\1\u03cb",
+            "\1\u03cc",
+            "\1\u03cd",
+            "\1\u03ce",
+            "",
+            "\1\u03cf",
+            "\1\u03d0",
+            "\1\u03d1",
+            "\1\u03d2",
+            "\1\u03d3",
+            "\1\u03d4",
+            "\1\u03d5",
+            "\1\u03d6",
+            "\1\u03d7",
+            "\1\u03d8",
+            "\1\u03d9",
+            "\1\u03da",
+            "\1\u03db",
+            "\1\u03dc",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff"+
+            "\32\106",
+            "\1\u03de",
+            "\1\u03df",
+            "\1\u03e0",
+            "\1\u03e1",
+            "",
+            "\1\u03e2",
+            "\1\u03e3",
+            "\1\u03e4",
+            "\1\u03e5",
+            "\1\u03e7\2\uffff\1\u03e6",
+            "\1\u03e8",
+            "\1\u03e9",
+            "\1\u03ea",
+            "",
+            "",
+            "\1\u03ec\2\uffff\1\u03eb",
+            "\1\u03ed",
+            "\1\u03ee",
+            "",
+            "",
+            "\1\u03f0\2\uffff\1\u03ef",
+            "\1\u03f1",
+            "",
+            "",
+            "\1\u03f3\2\uffff\1\u03f2",
+            "",
+            ""
+    };
+
+    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 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | T__190 | T__191 | T__192 | T__193 | T__194 | T__195 | T__196 | T__197 | T__198 | T__199 | T__200 | T__201 | T__202 | T__203 | T__204 | T__205 | T__206 | T__207 | T__208 | T__209 | T__210 | T__211 | T__212 | T__213 | T__214 | T__215 | 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=='d') ) {s = 4;}
+
+                        else if ( (LA21_0=='f') ) {s = 5;}
+
+                        else if ( (LA21_0=='u') ) {s = 6;}
+
+                        else if ( (LA21_0=='r') ) {s = 7;}
+
+                        else if ( (LA21_0=='t') ) {s = 8;}
+
+                        else if ( (LA21_0=='c') ) {s = 9;}
+
+                        else if ( (LA21_0=='n') ) {s = 10;}
+
+                        else if ( (LA21_0=='j') ) {s = 11;}
+
+                        else if ( (LA21_0=='e') ) {s = 12;}
+
+                        else if ( (LA21_0=='o') ) {s = 13;}
+
+                        else if ( (LA21_0=='m') ) {s = 14;}
+
+                        else if ( (LA21_0=='a') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0=='(') ) {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=='h') ) {s = 23;}
+
+                        else if ( (LA21_0=='l') ) {s = 24;}
+
+                        else if ( (LA21_0=='i') ) {s = 25;}
+
+                        else if ( (LA21_0=='.') ) {s = 26;}
+
+                        else if ( (LA21_0=='w') ) {s = 27;}
+
+                        else if ( (LA21_0=='y') ) {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 = 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=='v') ) {s = 44;}
+
+                        else if ( (LA21_0=='b') ) {s = 45;}
+
+                        else if ( (LA21_0=='g') ) {s = 46;}
+
+                        else if ( (LA21_0=='B') ) {s = 47;}
+
+                        else if ( (LA21_0=='P') ) {s = 48;}
+
+                        else if ( (LA21_0=='R') ) {s = 49;}
+
+                        else if ( (LA21_0=='T') ) {s = 50;}
+
+                        else if ( (LA21_0=='E') ) {s = 51;}
+
+                        else if ( (LA21_0=='N') ) {s = 52;}
+
+                        else if ( (LA21_0=='S') ) {s = 53;}
+
+                        else if ( (LA21_0=='D') ) {s = 54;}
+
+                        else if ( (LA21_0=='C') ) {s = 55;}
+
+                        else if ( (LA21_0=='A') ) {s = 56;}
+
+                        else if ( (LA21_0=='G') ) {s = 57;}
+
+                        else if ( (LA21_0=='U') ) {s = 58;}
+
+                        else if ( (LA21_0=='0') ) {s = 59;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 60;}
+
+                        else if ( (LA21_0=='^') ) {s = 61;}
+
+                        else if ( (LA21_0=='$'||LA21_0=='F'||(LA21_0>='H' && LA21_0<='M')||LA21_0=='O'||LA21_0=='Q'||(LA21_0>='V' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='k'||LA21_0=='q'||LA21_0=='x'||LA21_0=='z') ) {s = 62;}
+
+                        else if ( (LA21_0=='\"') ) {s = 63;}
+
+                        else if ( (LA21_0=='\'') ) {s = 64;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 65;}
+
+                        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 = 66;}
+
+                        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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSLParser.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSLParser.java
new file mode 100644
index 0000000..21b155e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSLParser.java
@@ -0,0 +1,10014 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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.datamartdsl.services.DatamartDSLGrammarAccess;
+
+
+
+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 InternalDatamartDSLParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'datamart'", "'described by'", "'for'", "'using'", "'role'", "'task'", "'columns'", "'conditions'", "'column'", "'filter'", "'cube'", "'nonempty values'", "'join'", "'entity'", "'tracking'", "'navigation'", "'properties'", "'ordering'", "'filler rows'", "'to'", "'many to one'", "'one to many'", "'property'", "'aggregate'", "'on axis'", "'scale'", "'condition'", "'order'", "'or'", "'and'", "'('", "')'", "'filtered'", "'optional'", "'selected'", "'derive'", "'from'", "'+'", "'-'", "'*'", "'/'", "'of'", "'over'", "'slicer'", "'axis'", "'derived'", "'measure'", "'hierarchy'", "'default'", "'condensed'", "'exploded'", "'level'", "'detailed'", "'except'", "'ordered by'", "'descending'", "'import'", "'.'", "'fill'", "'with'", "'filler-date future'", "'years'", "'filler-date past'", "'filler-date range'", "'up to and including'", "'filler-signed-double range'", "'decimals'", "'round to'", "'filler-signed-double random'", "'filler-signed-integer range'", "'filler-signed-integer random'", "'filler-text random'", "'filler-text paragraps'", "'filler-text sentences'", "'filler-text words'", "'filler-unsigned-double range'", "'filler-unsigned-double random'", "'filler-unsigned-integer range'", "'filler-unsigned-integer random'", "'@'", "','", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'**'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "';'", "'if'", "'else'", "'switch'", "':'", "'case'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'rows'", "'pages'", "'sections'", "'chapters'", "'previous'", "'next'", "'first'", "'last'", "'lag'", "'lead'", "'year-to-date'", "'periods'", "'tail'", "'head'", "'topcount'", "'topsummation'", "'toppercentage'", "'bottomcount'", "'bottomsummation'", "'bottompercentage'", "'average'", "'summation'", "'deviation'", "'<='", "'like'", "'count'", "'group1'", "'group2'", "'group3'", "'group4'", "'group5'", "'group6'", "'group7'", "'group8'", "'group9'", "'BusinessAdministrator'", "'PotentialOwner'", "'Recipient'", "'TaskInitiator'", "'TaskStakeholder'", "'ExcludedOwner'", "'Name'", "'Priority'", "'Status'", "'Subject'", "'Description'", "'ExpirationTime'", "'CreatedOn'", "'CreatedBy'", "'ActivationTime'", "'ActualOwner'", "'TaskId'", "'ProcessId'", "'ProcessInstanceId'", "'ProcessSessionId'", "'Groups'", "'Users'", "'ascending'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    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__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=5;
+    public static final int T__66=66;
+    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__166=166;
+    public static final int T__165=165;
+    public static final int T__168=168;
+    public static final int T__167=167;
+    public static final int T__162=162;
+    public static final int T__161=161;
+    public static final int T__164=164;
+    public static final int T__163=163;
+    public static final int T__160=160;
+    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__159=159;
+    public static final int T__30=30;
+    public static final int T__158=158;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    public static final int T__157=157;
+    public static final int T__156=156;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    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__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    public static final int T__100=100;
+    public static final int T__102=102;
+    public static final int T__101=101;
+    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__13=13;
+    public static final int T__14=14;
+    public static final int T__214=214;
+    public static final int T__213=213;
+    public static final int T__215=215;
+    public static final int T__210=210;
+    public static final int T__212=212;
+    public static final int T__211=211;
+    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__207=207;
+    public static final int T__23=23;
+    public static final int T__206=206;
+    public static final int T__24=24;
+    public static final int T__209=209;
+    public static final int T__25=25;
+    public static final int T__208=208;
+    public static final int T__203=203;
+    public static final int T__202=202;
+    public static final int T__20=20;
+    public static final int T__205=205;
+    public static final int T__21=21;
+    public static final int T__204=204;
+    public static final int T__122=122;
+    public static final int T__121=121;
+    public static final int T__124=124;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__119=119;
+    public static final int T__118=118;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__114=114;
+    public static final int T__117=117;
+    public static final int T__116=116;
+    public static final int T__111=111;
+    public static final int T__110=110;
+    public static final int T__113=113;
+    public static final int T__112=112;
+    public static final int T__108=108;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__104=104;
+    public static final int T__103=103;
+    public static final int T__106=106;
+    public static final int T__105=105;
+    public static final int RULE_HEX=7;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__201=201;
+    public static final int T__200=200;
+    public static final int T__91=91;
+    public static final int T__188=188;
+    public static final int T__92=92;
+    public static final int T__187=187;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__189=189;
+    public static final int T__184=184;
+    public static final int T__183=183;
+    public static final int T__186=186;
+    public static final int T__90=90;
+    public static final int T__185=185;
+    public static final int T__180=180;
+    public static final int T__182=182;
+    public static final int T__181=181;
+    public static final int T__99=99;
+    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 T__177=177;
+    public static final int T__176=176;
+    public static final int T__179=179;
+    public static final int T__178=178;
+    public static final int T__173=173;
+    public static final int T__172=172;
+    public static final int T__175=175;
+    public static final int T__174=174;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int T__169=169;
+    public static final int T__70=70;
+    public static final int T__71=71;
+    public static final int T__72=72;
+    public static final int RULE_STRING=6;
+    public static final int T__77=77;
+    public static final int T__78=78;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__74=74;
+    public static final int T__75=75;
+    public static final int T__76=76;
+    public static final int T__80=80;
+    public static final int T__199=199;
+    public static final int T__81=81;
+    public static final int T__198=198;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__195=195;
+    public static final int T__194=194;
+    public static final int RULE_WS=11;
+    public static final int T__197=197;
+    public static final int T__196=196;
+    public static final int T__191=191;
+    public static final int T__190=190;
+    public static final int T__193=193;
+    public static final int T__192=192;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__89=89;
+    public static final int T__84=84;
+    public static final int T__85=85;
+    public static final int T__86=86;
+    public static final int T__87=87;
+
+    // delegates
+    // delegators
+
+
+        public InternalDatamartDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalDatamartDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalDatamartDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g"; }
+
+
+
+     	private DatamartDSLGrammarAccess grammarAccess;
+     	
+        public InternalDatamartDSLParser(TokenStream input, DatamartDSLGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "DatamartModel";	
+       	}
+       	
+       	@Override
+       	protected DatamartDSLGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleDatamartModel"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:68:1: entryRuleDatamartModel returns [EObject current=null] : iv_ruleDatamartModel= ruleDatamartModel EOF ;
+    public final EObject entryRuleDatamartModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:69:2: (iv_ruleDatamartModel= ruleDatamartModel EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:70:2: iv_ruleDatamartModel= ruleDatamartModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartModel_in_entryRuleDatamartModel75);
+            iv_ruleDatamartModel=ruleDatamartModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartModel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartModel"
+
+
+    // $ANTLR start "ruleDatamartModel"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:77:1: ruleDatamartModel returns [EObject current=null] : ( (lv_packages_0_0= ruleDatamartPackage ) )* ;
+    public final EObject ruleDatamartModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:80:28: ( ( (lv_packages_0_0= ruleDatamartPackage ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:81:1: ( (lv_packages_0_0= ruleDatamartPackage ) )*
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:81:1: ( (lv_packages_0_0= ruleDatamartPackage ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==13) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:82:1: (lv_packages_0_0= ruleDatamartPackage )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:82:1: (lv_packages_0_0= ruleDatamartPackage )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:83:3: lv_packages_0_0= ruleDatamartPackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartModelAccess().getPackagesDatamartPackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartPackage_in_ruleDatamartModel130);
+            	    lv_packages_0_0=ruleDatamartPackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"DatamartPackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartModel"
+
+
+    // $ANTLR start "entryRuleDatamartPackage"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:107:1: entryRuleDatamartPackage returns [EObject current=null] : iv_ruleDatamartPackage= ruleDatamartPackage EOF ;
+    public final EObject entryRuleDatamartPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:108:2: (iv_ruleDatamartPackage= ruleDatamartPackage EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:109:2: iv_ruleDatamartPackage= ruleDatamartPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartPackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartPackage_in_entryRuleDatamartPackage166);
+            iv_ruleDatamartPackage=ruleDatamartPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartPackage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartPackage176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartPackage"
+
+
+    // $ANTLR start "ruleDatamartPackage"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:116:1: ruleDatamartPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleDatamartPackage() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        EObject lv_imports_4_0 = null;
+
+        EObject lv_definitions_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:120:2: ()
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDatamartPackageAccess().getDatamartPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleDatamartPackage222); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDatamartPackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:132:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleDatamartPackage243);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* 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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= ruleDatamartImport ) )* ( (lv_definitions_5_0= ruleDatamartDefinition ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleDatamartPackage256); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getDatamartPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:152:1: ( (lv_imports_4_0= ruleDatamartImport ) )*
+                    loop2:
+                    do {
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
+
+                        if ( (LA2_0==72) ) {
+                            alt2=1;
+                        }
+
+
+                        switch (alt2) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:153:1: (lv_imports_4_0= ruleDatamartImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:153:1: (lv_imports_4_0= ruleDatamartImport )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:154:3: lv_imports_4_0= ruleDatamartImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartPackageAccess().getImportsDatamartImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartImport_in_ruleDatamartPackage277);
+                    	    lv_imports_4_0=ruleDatamartImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"DatamartImport");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop2;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:170:3: ( (lv_definitions_5_0= ruleDatamartDefinition ) )*
+                    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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:171:1: (lv_definitions_5_0= ruleDatamartDefinition )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:171:1: (lv_definitions_5_0= ruleDatamartDefinition )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:172:3: lv_definitions_5_0= ruleDatamartDefinition
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartPackageAccess().getDefinitionsDatamartDefinitionParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartDefinition_in_ruleDatamartPackage299);
+                    	    lv_definitions_5_0=ruleDatamartDefinition();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"definitions",
+                    	              		lv_definitions_5_0, 
+                    	              		"DatamartDefinition");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleDatamartPackage312); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getDatamartPackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartPackage"
+
+
+    // $ANTLR start "entryRuleDatamartDefinition"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:200:1: entryRuleDatamartDefinition returns [EObject current=null] : iv_ruleDatamartDefinition= ruleDatamartDefinition EOF ;
+    public final EObject entryRuleDatamartDefinition() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartDefinition = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:201:2: (iv_ruleDatamartDefinition= ruleDatamartDefinition EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:202:2: iv_ruleDatamartDefinition= ruleDatamartDefinition EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartDefinitionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartDefinition_in_entryRuleDatamartDefinition350);
+            iv_ruleDatamartDefinition=ruleDatamartDefinition();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartDefinition; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartDefinition360); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartDefinition"
+
+
+    // $ANTLR start "ruleDatamartDefinition"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:209:1: ruleDatamartDefinition returns [EObject current=null] : (otherlv_0= 'datamart' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}' )? otherlv_8= 'using' ( (lv_source_9_0= ruleDatamartSource ) ) ) ;
+    public final EObject ruleDatamartDefinition() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token lv_description_2_0=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        AntlrDatatypeRuleToken lv_descriptionValue_3_0 = null;
+
+        EObject lv_roles_6_0 = null;
+
+        EObject lv_source_9_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:212:28: ( (otherlv_0= 'datamart' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}' )? otherlv_8= 'using' ( (lv_source_9_0= ruleDatamartSource ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:213:1: (otherlv_0= 'datamart' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}' )? otherlv_8= 'using' ( (lv_source_9_0= ruleDatamartSource ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:213:1: (otherlv_0= 'datamart' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}' )? otherlv_8= 'using' ( (lv_source_9_0= ruleDatamartSource ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:213:3: otherlv_0= 'datamart' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}' )? otherlv_8= 'using' ( (lv_source_9_0= ruleDatamartSource ) )
+            {
+            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleDatamartDefinition397); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartDefinitionAccess().getDatamartKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:217:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:218:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:218:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:219:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartDefinition414); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getDatamartDefinitionAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartDefinitionRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:235:2: ( ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) ) )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==17) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:235:3: ( (lv_description_2_0= 'described by' ) ) ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:235:3: ( (lv_description_2_0= 'described by' ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:236:1: (lv_description_2_0= 'described by' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:236:1: (lv_description_2_0= 'described by' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:237:3: lv_description_2_0= 'described by'
+                    {
+                    lv_description_2_0=(Token)match(input,17,FOLLOW_17_in_ruleDatamartDefinition438); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_description_2_0, grammarAccess.getDatamartDefinitionAccess().getDescriptionDescribedByKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartDefinitionRule());
+                      	        }
+                             		setWithLastConsumed(current, "description", true, "described by");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:250:2: ( (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:251:1: (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:251:1: (lv_descriptionValue_3_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:252:3: lv_descriptionValue_3_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartDefinitionAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleDatamartDefinition472);
+                    lv_descriptionValue_3_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartDefinitionRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"descriptionValue",
+                              		lv_descriptionValue_3_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:268:4: (otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}' )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==18) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:268:6: otherlv_4= 'for' otherlv_5= '{' ( (lv_roles_6_0= ruleDatamartRole ) )* otherlv_7= '}'
+                    {
+                    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleDatamartDefinition487); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_4, grammarAccess.getDatamartDefinitionAccess().getForKeyword_3_0());
+                          
+                    }
+                    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleDatamartDefinition499); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getDatamartDefinitionAccess().getLeftCurlyBracketKeyword_3_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:276:1: ( (lv_roles_6_0= ruleDatamartRole ) )*
+                    loop6:
+                    do {
+                        int alt6=2;
+                        int LA6_0 = input.LA(1);
+
+                        if ( (LA6_0==20) ) {
+                            alt6=1;
+                        }
+
+
+                        switch (alt6) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:277:1: (lv_roles_6_0= ruleDatamartRole )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:277:1: (lv_roles_6_0= ruleDatamartRole )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:278:3: lv_roles_6_0= ruleDatamartRole
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartDefinitionAccess().getRolesDatamartRoleParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartRole_in_ruleDatamartDefinition520);
+                    	    lv_roles_6_0=ruleDatamartRole();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartDefinitionRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"roles",
+                    	              		lv_roles_6_0, 
+                    	              		"DatamartRole");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop6;
+                        }
+                    } while (true);
+
+                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleDatamartDefinition533); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_7, grammarAccess.getDatamartDefinitionAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            otherlv_8=(Token)match(input,19,FOLLOW_19_in_ruleDatamartDefinition547); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_8, grammarAccess.getDatamartDefinitionAccess().getUsingKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:302:1: ( (lv_source_9_0= ruleDatamartSource ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:303:1: (lv_source_9_0= ruleDatamartSource )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:303:1: (lv_source_9_0= ruleDatamartSource )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:304:3: lv_source_9_0= ruleDatamartSource
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartDefinitionAccess().getSourceDatamartSourceParserRuleCall_5_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartSource_in_ruleDatamartDefinition568);
+            lv_source_9_0=ruleDatamartSource();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartDefinitionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"source",
+                      		lv_source_9_0, 
+                      		"DatamartSource");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartDefinition"
+
+
+    // $ANTLR start "entryRuleDatamartRole"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:328:1: entryRuleDatamartRole returns [EObject current=null] : iv_ruleDatamartRole= ruleDatamartRole EOF ;
+    public final EObject entryRuleDatamartRole() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartRole = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:329:2: (iv_ruleDatamartRole= ruleDatamartRole EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:330:2: iv_ruleDatamartRole= ruleDatamartRole EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartRoleRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartRole_in_entryRuleDatamartRole604);
+            iv_ruleDatamartRole=ruleDatamartRole();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartRole; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartRole614); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartRole"
+
+
+    // $ANTLR start "ruleDatamartRole"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:337:1: ruleDatamartRole returns [EObject current=null] : (otherlv_0= 'role' ( (otherlv_1= RULE_ID ) ) ) ;
+    public final EObject ruleDatamartRole() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:340:28: ( (otherlv_0= 'role' ( (otherlv_1= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:341:1: (otherlv_0= 'role' ( (otherlv_1= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:341:1: (otherlv_0= 'role' ( (otherlv_1= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:341:3: otherlv_0= 'role' ( (otherlv_1= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleDatamartRole651); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartRoleAccess().getRoleKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:345:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:346:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:346:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:347:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartRoleRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartRole671); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartRoleAccess().getAssignedRoleRoleCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartRole"
+
+
+    // $ANTLR start "entryRuleDatamartSource"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:366:1: entryRuleDatamartSource returns [EObject current=null] : iv_ruleDatamartSource= ruleDatamartSource EOF ;
+    public final EObject entryRuleDatamartSource() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSource = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:367:2: (iv_ruleDatamartSource= ruleDatamartSource EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:368:2: iv_ruleDatamartSource= ruleDatamartSource EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSourceRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSource_in_entryRuleDatamartSource707);
+            iv_ruleDatamartSource=ruleDatamartSource();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSource; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSource717); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSource"
+
+
+    // $ANTLR start "ruleDatamartSource"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:375:1: ruleDatamartSource returns [EObject current=null] : (this_DatamartCube_0= ruleDatamartCube | this_DatamartEntity_1= ruleDatamartEntity | this_DatamartTask_2= ruleDatamartTask ) ;
+    public final EObject ruleDatamartSource() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DatamartCube_0 = null;
+
+        EObject this_DatamartEntity_1 = null;
+
+        EObject this_DatamartTask_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:378:28: ( (this_DatamartCube_0= ruleDatamartCube | this_DatamartEntity_1= ruleDatamartEntity | this_DatamartTask_2= ruleDatamartTask ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:379:1: (this_DatamartCube_0= ruleDatamartCube | this_DatamartEntity_1= ruleDatamartEntity | this_DatamartTask_2= ruleDatamartTask )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:379:1: (this_DatamartCube_0= ruleDatamartCube | this_DatamartEntity_1= ruleDatamartEntity | this_DatamartTask_2= ruleDatamartTask )
+            int alt8=3;
+            switch ( input.LA(1) ) {
+            case 26:
+                {
+                alt8=1;
+                }
+                break;
+            case 29:
+                {
+                alt8=2;
+                }
+                break;
+            case 21:
+                {
+                alt8=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:380:5: this_DatamartCube_0= ruleDatamartCube
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartSourceAccess().getDatamartCubeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartCube_in_ruleDatamartSource764);
+                    this_DatamartCube_0=ruleDatamartCube();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartCube_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:390:5: this_DatamartEntity_1= ruleDatamartEntity
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartSourceAccess().getDatamartEntityParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartEntity_in_ruleDatamartSource791);
+                    this_DatamartEntity_1=ruleDatamartEntity();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartEntity_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:400:5: this_DatamartTask_2= ruleDatamartTask
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartSourceAccess().getDatamartTaskParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartTask_in_ruleDatamartSource818);
+                    this_DatamartTask_2=ruleDatamartTask();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartTask_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSource"
+
+
+    // $ANTLR start "entryRuleDatamartTask"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:416:1: entryRuleDatamartTask returns [EObject current=null] : iv_ruleDatamartTask= ruleDatamartTask EOF ;
+    public final EObject entryRuleDatamartTask() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartTask = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:417:2: (iv_ruleDatamartTask= ruleDatamartTask EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:418:2: iv_ruleDatamartTask= ruleDatamartTask EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartTaskRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartTask_in_entryRuleDatamartTask853);
+            iv_ruleDatamartTask=ruleDatamartTask();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartTask; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartTask863); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartTask"
+
+
+    // $ANTLR start "ruleDatamartTask"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:425:1: ruleDatamartTask returns [EObject current=null] : (otherlv_0= 'task' ( (lv_taskQuery_1_0= ruleTaskQueryTopicEnum ) ) (otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}' )? (otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}' )? ) ;
+    public final EObject ruleDatamartTask() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Enumerator lv_taskQuery_1_0 = null;
+
+        EObject lv_columns_4_0 = null;
+
+        EObject lv_conditions_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:428:28: ( (otherlv_0= 'task' ( (lv_taskQuery_1_0= ruleTaskQueryTopicEnum ) ) (otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}' )? (otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}' )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:429:1: (otherlv_0= 'task' ( (lv_taskQuery_1_0= ruleTaskQueryTopicEnum ) ) (otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}' )? (otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}' )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:429:1: (otherlv_0= 'task' ( (lv_taskQuery_1_0= ruleTaskQueryTopicEnum ) ) (otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}' )? (otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}' )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:429:3: otherlv_0= 'task' ( (lv_taskQuery_1_0= ruleTaskQueryTopicEnum ) ) (otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}' )? (otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}' )?
+            {
+            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleDatamartTask900); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartTaskAccess().getTaskKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:433:1: ( (lv_taskQuery_1_0= ruleTaskQueryTopicEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:434:1: (lv_taskQuery_1_0= ruleTaskQueryTopicEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:434:1: (lv_taskQuery_1_0= ruleTaskQueryTopicEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:435:3: lv_taskQuery_1_0= ruleTaskQueryTopicEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartTaskAccess().getTaskQueryTaskQueryTopicEnumEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTaskQueryTopicEnum_in_ruleDatamartTask921);
+            lv_taskQuery_1_0=ruleTaskQueryTopicEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartTaskRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"taskQuery",
+                      		lv_taskQuery_1_0, 
+                      		"TaskQueryTopicEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:451:2: (otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==22) ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:451:4: otherlv_2= 'columns' otherlv_3= '{' ( (lv_columns_4_0= ruleDatamartColumn ) )* otherlv_5= '}'
+                    {
+                    otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleDatamartTask934); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getDatamartTaskAccess().getColumnsKeyword_2_0());
+                          
+                    }
+                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleDatamartTask946); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_2_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:459:1: ( (lv_columns_4_0= ruleDatamartColumn ) )*
+                    loop9:
+                    do {
+                        int alt9=2;
+                        int LA9_0 = input.LA(1);
+
+                        if ( (LA9_0==24) ) {
+                            alt9=1;
+                        }
+
+
+                        switch (alt9) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:460:1: (lv_columns_4_0= ruleDatamartColumn )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:460:1: (lv_columns_4_0= ruleDatamartColumn )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:461:3: lv_columns_4_0= ruleDatamartColumn
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartTaskAccess().getColumnsDatamartColumnParserRuleCall_2_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartColumn_in_ruleDatamartTask967);
+                    	    lv_columns_4_0=ruleDatamartColumn();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartTaskRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"columns",
+                    	              		lv_columns_4_0, 
+                    	              		"DatamartColumn");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop9;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleDatamartTask980); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_2_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:481:3: (otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}' )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==23) ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:481:5: otherlv_6= 'conditions' otherlv_7= '{' ( (lv_conditions_8_0= ruleDatamartCondition ) )* otherlv_9= '}'
+                    {
+                    otherlv_6=(Token)match(input,23,FOLLOW_23_in_ruleDatamartTask995); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getDatamartTaskAccess().getConditionsKeyword_3_0());
+                          
+                    }
+                    otherlv_7=(Token)match(input,14,FOLLOW_14_in_ruleDatamartTask1007); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_7, grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_3_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:489:1: ( (lv_conditions_8_0= ruleDatamartCondition ) )*
+                    loop11:
+                    do {
+                        int alt11=2;
+                        int LA11_0 = input.LA(1);
+
+                        if ( (LA11_0==42) ) {
+                            alt11=1;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:490:1: (lv_conditions_8_0= ruleDatamartCondition )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:490:1: (lv_conditions_8_0= ruleDatamartCondition )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:491:3: lv_conditions_8_0= ruleDatamartCondition
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartTaskAccess().getConditionsDatamartConditionParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartCondition_in_ruleDatamartTask1028);
+                    	    lv_conditions_8_0=ruleDatamartCondition();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartTaskRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"conditions",
+                    	              		lv_conditions_8_0, 
+                    	              		"DatamartCondition");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    otherlv_9=(Token)match(input,15,FOLLOW_15_in_ruleDatamartTask1041); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_9, grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartTask"
+
+
+    // $ANTLR start "entryRuleDatamartColumn"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:519:1: entryRuleDatamartColumn returns [EObject current=null] : iv_ruleDatamartColumn= ruleDatamartColumn EOF ;
+    public final EObject entryRuleDatamartColumn() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartColumn = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:520:2: (iv_ruleDatamartColumn= ruleDatamartColumn EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:521:2: iv_ruleDatamartColumn= ruleDatamartColumn EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartColumnRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartColumn_in_entryRuleDatamartColumn1079);
+            iv_ruleDatamartColumn=ruleDatamartColumn();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartColumn; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartColumn1089); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartColumn"
+
+
+    // $ANTLR start "ruleDatamartColumn"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:528:1: ruleDatamartColumn returns [EObject current=null] : (otherlv_0= 'column' ( (lv_columnRef_1_0= ruleTaskQueryColumnEnum ) ) ) ;
+    public final EObject ruleDatamartColumn() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Enumerator lv_columnRef_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:531:28: ( (otherlv_0= 'column' ( (lv_columnRef_1_0= ruleTaskQueryColumnEnum ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:532:1: (otherlv_0= 'column' ( (lv_columnRef_1_0= ruleTaskQueryColumnEnum ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:532:1: (otherlv_0= 'column' ( (lv_columnRef_1_0= ruleTaskQueryColumnEnum ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:532:3: otherlv_0= 'column' ( (lv_columnRef_1_0= ruleTaskQueryColumnEnum ) )
+            {
+            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleDatamartColumn1126); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartColumnAccess().getColumnKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:536:1: ( (lv_columnRef_1_0= ruleTaskQueryColumnEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:537:1: (lv_columnRef_1_0= ruleTaskQueryColumnEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:537:1: (lv_columnRef_1_0= ruleTaskQueryColumnEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:538:3: lv_columnRef_1_0= ruleTaskQueryColumnEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartColumnAccess().getColumnRefTaskQueryColumnEnumEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTaskQueryColumnEnum_in_ruleDatamartColumn1147);
+            lv_columnRef_1_0=ruleTaskQueryColumnEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartColumnRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"columnRef",
+                      		lv_columnRef_1_0, 
+                      		"TaskQueryColumnEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartColumn"
+
+
+    // $ANTLR start "entryRuleDatamartTaskFilter"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:562:1: entryRuleDatamartTaskFilter returns [EObject current=null] : iv_ruleDatamartTaskFilter= ruleDatamartTaskFilter EOF ;
+    public final EObject entryRuleDatamartTaskFilter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartTaskFilter = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:563:2: (iv_ruleDatamartTaskFilter= ruleDatamartTaskFilter EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:564:2: iv_ruleDatamartTaskFilter= ruleDatamartTaskFilter EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartTaskFilterRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartTaskFilter_in_entryRuleDatamartTaskFilter1183);
+            iv_ruleDatamartTaskFilter=ruleDatamartTaskFilter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartTaskFilter; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartTaskFilter1193); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartTaskFilter"
+
+
+    // $ANTLR start "ruleDatamartTaskFilter"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:571:1: ruleDatamartTaskFilter returns [EObject current=null] : (otherlv_0= 'filter' ( (lv_filterRef_1_0= ruleTaskFilterEnum ) ) ) ;
+    public final EObject ruleDatamartTaskFilter() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Enumerator lv_filterRef_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:574:28: ( (otherlv_0= 'filter' ( (lv_filterRef_1_0= ruleTaskFilterEnum ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:575:1: (otherlv_0= 'filter' ( (lv_filterRef_1_0= ruleTaskFilterEnum ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:575:1: (otherlv_0= 'filter' ( (lv_filterRef_1_0= ruleTaskFilterEnum ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:575:3: otherlv_0= 'filter' ( (lv_filterRef_1_0= ruleTaskFilterEnum ) )
+            {
+            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleDatamartTaskFilter1230); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartTaskFilterAccess().getFilterKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:579:1: ( (lv_filterRef_1_0= ruleTaskFilterEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:580:1: (lv_filterRef_1_0= ruleTaskFilterEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:580:1: (lv_filterRef_1_0= ruleTaskFilterEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:581:3: lv_filterRef_1_0= ruleTaskFilterEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartTaskFilterAccess().getFilterRefTaskFilterEnumEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTaskFilterEnum_in_ruleDatamartTaskFilter1251);
+            lv_filterRef_1_0=ruleTaskFilterEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartTaskFilterRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"filterRef",
+                      		lv_filterRef_1_0, 
+                      		"TaskFilterEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartTaskFilter"
+
+
+    // $ANTLR start "entryRuleDatamartCube"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:605:1: entryRuleDatamartCube returns [EObject current=null] : iv_ruleDatamartCube= ruleDatamartCube EOF ;
+    public final EObject entryRuleDatamartCube() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartCube = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:606:2: (iv_ruleDatamartCube= ruleDatamartCube EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:607:2: iv_ruleDatamartCube= ruleDatamartCube EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartCubeRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartCube_in_entryRuleDatamartCube1287);
+            iv_ruleDatamartCube=ruleDatamartCube();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartCube; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartCube1297); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartCube"
+
+
+    // $ANTLR start "ruleDatamartCube"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:614:1: ruleDatamartCube returns [EObject current=null] : (otherlv_0= 'cube' ( (otherlv_1= RULE_ID ) ) ( (lv_nonEmpty_2_0= 'nonempty values' ) )? otherlv_3= '{' ( (lv_axisslicer_4_0= ruleDatamartCubeElement ) )* otherlv_5= '}' ) ;
+    public final EObject ruleDatamartCube() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_nonEmpty_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        EObject lv_axisslicer_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:617:28: ( (otherlv_0= 'cube' ( (otherlv_1= RULE_ID ) ) ( (lv_nonEmpty_2_0= 'nonempty values' ) )? otherlv_3= '{' ( (lv_axisslicer_4_0= ruleDatamartCubeElement ) )* otherlv_5= '}' ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:618:1: (otherlv_0= 'cube' ( (otherlv_1= RULE_ID ) ) ( (lv_nonEmpty_2_0= 'nonempty values' ) )? otherlv_3= '{' ( (lv_axisslicer_4_0= ruleDatamartCubeElement ) )* otherlv_5= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:618:1: (otherlv_0= 'cube' ( (otherlv_1= RULE_ID ) ) ( (lv_nonEmpty_2_0= 'nonempty values' ) )? otherlv_3= '{' ( (lv_axisslicer_4_0= ruleDatamartCubeElement ) )* otherlv_5= '}' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:618:3: otherlv_0= 'cube' ( (otherlv_1= RULE_ID ) ) ( (lv_nonEmpty_2_0= 'nonempty values' ) )? otherlv_3= '{' ( (lv_axisslicer_4_0= ruleDatamartCubeElement ) )* otherlv_5= '}'
+            {
+            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleDatamartCube1334); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartCubeAccess().getCubeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:622:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:623:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:623:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:624:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartCubeRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartCube1354); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartCubeAccess().getCubeRefCubeTypeCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:635:2: ( (lv_nonEmpty_2_0= 'nonempty values' ) )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==27) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:636:1: (lv_nonEmpty_2_0= 'nonempty values' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:636:1: (lv_nonEmpty_2_0= 'nonempty values' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:637:3: lv_nonEmpty_2_0= 'nonempty values'
+                    {
+                    lv_nonEmpty_2_0=(Token)match(input,27,FOLLOW_27_in_ruleDatamartCube1372); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_nonEmpty_2_0, grammarAccess.getDatamartCubeAccess().getNonEmptyNonemptyValuesKeyword_2_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartCubeRule());
+                      	        }
+                             		setWithLastConsumed(current, "nonEmpty", true, "nonempty values");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleDatamartCube1398); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getDatamartCubeAccess().getLeftCurlyBracketKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:654:1: ( (lv_axisslicer_4_0= ruleDatamartCubeElement ) )*
+            loop14:
+            do {
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+
+                if ( (LA14_0==51||(LA14_0>=59 && LA14_0<=60)) ) {
+                    alt14=1;
+                }
+
+
+                switch (alt14) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:655:1: (lv_axisslicer_4_0= ruleDatamartCubeElement )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:655:1: (lv_axisslicer_4_0= ruleDatamartCubeElement )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:656:3: lv_axisslicer_4_0= ruleDatamartCubeElement
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartCubeAccess().getAxisslicerDatamartCubeElementParserRuleCall_4_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartCubeElement_in_ruleDatamartCube1419);
+            	    lv_axisslicer_4_0=ruleDatamartCubeElement();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartCubeRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"axisslicer",
+            	              		lv_axisslicer_4_0, 
+            	              		"DatamartCubeElement");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop14;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleDatamartCube1432); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getDatamartCubeAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartCube"
+
+
+    // $ANTLR start "entryRuleDatamartReference"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:684:1: entryRuleDatamartReference returns [EObject current=null] : iv_ruleDatamartReference= ruleDatamartReference EOF ;
+    public final EObject entryRuleDatamartReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartReference = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:685:2: (iv_ruleDatamartReference= ruleDatamartReference EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:686:2: iv_ruleDatamartReference= ruleDatamartReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartReference_in_entryRuleDatamartReference1468);
+            iv_ruleDatamartReference=ruleDatamartReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartReference; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartReference1478); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartReference"
+
+
+    // $ANTLR start "ruleDatamartReference"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:693:1: ruleDatamartReference returns [EObject current=null] : (otherlv_0= 'join' ( (otherlv_1= RULE_ID ) ) ) ;
+    public final EObject ruleDatamartReference() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:696:28: ( (otherlv_0= 'join' ( (otherlv_1= RULE_ID ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:697:1: (otherlv_0= 'join' ( (otherlv_1= RULE_ID ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:697:1: (otherlv_0= 'join' ( (otherlv_1= RULE_ID ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:697:3: otherlv_0= 'join' ( (otherlv_1= RULE_ID ) )
+            {
+            otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleDatamartReference1515); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartReferenceAccess().getJoinKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:701:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:702:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:702:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:703:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartReferenceRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartReference1535); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartReferenceAccess().getRefLEntityReferenceCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartReference"
+
+
+    // $ANTLR start "entryRuleDatamartEntity"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:722:1: entryRuleDatamartEntity returns [EObject current=null] : iv_ruleDatamartEntity= ruleDatamartEntity EOF ;
+    public final EObject entryRuleDatamartEntity() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartEntity = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:723:2: (iv_ruleDatamartEntity= ruleDatamartEntity EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:724:2: iv_ruleDatamartEntity= ruleDatamartEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartEntity_in_entryRuleDatamartEntity1571);
+            iv_ruleDatamartEntity=ruleDatamartEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartEntity; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartEntity1581); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartEntity"
+
+
+    // $ANTLR start "ruleDatamartEntity"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:731:1: ruleDatamartEntity returns [EObject current=null] : (otherlv_0= 'entity' ( (otherlv_1= RULE_ID ) ) ( (lv_tracking_2_0= 'tracking' ) )? otherlv_3= '{' (otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}' )? (otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}' )? (otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}' )? (otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}' )? (otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}' )? otherlv_27= '}' ) ;
+    public final EObject ruleDatamartEntity() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_tracking_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_19=null;
+        Token otherlv_20=null;
+        Token lv_fillerMinCountRows_21_0=null;
+        Token otherlv_22=null;
+        Token lv_fillerMaxCountRows_23_0=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_27=null;
+        EObject lv_navigations_6_0 = null;
+
+        EObject lv_properties_10_0 = null;
+
+        EObject lv_conditions_14_0 = null;
+
+        EObject lv_ordering_18_0 = null;
+
+        EObject lv_fillerDatas_25_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:734:28: ( (otherlv_0= 'entity' ( (otherlv_1= RULE_ID ) ) ( (lv_tracking_2_0= 'tracking' ) )? otherlv_3= '{' (otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}' )? (otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}' )? (otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}' )? (otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}' )? (otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}' )? otherlv_27= '}' ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:735:1: (otherlv_0= 'entity' ( (otherlv_1= RULE_ID ) ) ( (lv_tracking_2_0= 'tracking' ) )? otherlv_3= '{' (otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}' )? (otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}' )? (otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}' )? (otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}' )? (otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}' )? otherlv_27= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:735:1: (otherlv_0= 'entity' ( (otherlv_1= RULE_ID ) ) ( (lv_tracking_2_0= 'tracking' ) )? otherlv_3= '{' (otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}' )? (otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}' )? (otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}' )? (otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}' )? (otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}' )? otherlv_27= '}' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:735:3: otherlv_0= 'entity' ( (otherlv_1= RULE_ID ) ) ( (lv_tracking_2_0= 'tracking' ) )? otherlv_3= '{' (otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}' )? (otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}' )? (otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}' )? (otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}' )? (otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}' )? otherlv_27= '}'
+            {
+            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleDatamartEntity1618); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartEntityAccess().getEntityKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:739:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:740:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:740:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:741:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartEntityRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartEntity1638); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartEntityAccess().getEntityRefLEntityCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:752:2: ( (lv_tracking_2_0= 'tracking' ) )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==30) ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:753:1: (lv_tracking_2_0= 'tracking' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:753:1: (lv_tracking_2_0= 'tracking' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:754:3: lv_tracking_2_0= 'tracking'
+                    {
+                    lv_tracking_2_0=(Token)match(input,30,FOLLOW_30_in_ruleDatamartEntity1656); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_tracking_2_0, grammarAccess.getDatamartEntityAccess().getTrackingTrackingKeyword_2_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartEntityRule());
+                      	        }
+                             		setWithLastConsumed(current, "tracking", true, "tracking");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleDatamartEntity1682); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:771:1: (otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}' )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==31) ) {
+                alt17=1;
+            }
+            switch (alt17) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:771:3: otherlv_4= 'navigation' otherlv_5= '{' ( (lv_navigations_6_0= ruleDatamartNavigation ) )* otherlv_7= '}'
+                    {
+                    otherlv_4=(Token)match(input,31,FOLLOW_31_in_ruleDatamartEntity1695); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_4, grammarAccess.getDatamartEntityAccess().getNavigationKeyword_4_0());
+                          
+                    }
+                    otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleDatamartEntity1707); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_4_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:779:1: ( (lv_navigations_6_0= ruleDatamartNavigation ) )*
+                    loop16:
+                    do {
+                        int alt16=2;
+                        int LA16_0 = input.LA(1);
+
+                        if ( ((LA16_0>=36 && LA16_0<=37)) ) {
+                            alt16=1;
+                        }
+
+
+                        switch (alt16) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:780:1: (lv_navigations_6_0= ruleDatamartNavigation )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:780:1: (lv_navigations_6_0= ruleDatamartNavigation )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:781:3: lv_navigations_6_0= ruleDatamartNavigation
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getNavigationsDatamartNavigationParserRuleCall_4_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartNavigation_in_ruleDatamartEntity1728);
+                    	    lv_navigations_6_0=ruleDatamartNavigation();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"navigations",
+                    	              		lv_navigations_6_0, 
+                    	              		"DatamartNavigation");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop16;
+                        }
+                    } while (true);
+
+                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleDatamartEntity1741); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_7, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_4_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:801:3: (otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==32) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:801:5: otherlv_8= 'properties' otherlv_9= '{' ( (lv_properties_10_0= ruleDatamartProperty ) )* otherlv_11= '}'
+                    {
+                    otherlv_8=(Token)match(input,32,FOLLOW_32_in_ruleDatamartEntity1756); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_8, grammarAccess.getDatamartEntityAccess().getPropertiesKeyword_5_0());
+                          
+                    }
+                    otherlv_9=(Token)match(input,14,FOLLOW_14_in_ruleDatamartEntity1768); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_9, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_5_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:809:1: ( (lv_properties_10_0= ruleDatamartProperty ) )*
+                    loop18:
+                    do {
+                        int alt18=2;
+                        int LA18_0 = input.LA(1);
+
+                        if ( (LA18_0==38) ) {
+                            alt18=1;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:810:1: (lv_properties_10_0= ruleDatamartProperty )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:810:1: (lv_properties_10_0= ruleDatamartProperty )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:811:3: lv_properties_10_0= ruleDatamartProperty
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getPropertiesDatamartPropertyParserRuleCall_5_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartProperty_in_ruleDatamartEntity1789);
+                    	    lv_properties_10_0=ruleDatamartProperty();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"properties",
+                    	              		lv_properties_10_0, 
+                    	              		"DatamartProperty");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop18;
+                        }
+                    } while (true);
+
+                    otherlv_11=(Token)match(input,15,FOLLOW_15_in_ruleDatamartEntity1802); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_11, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_5_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:831:3: (otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}' )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==23) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:831:5: otherlv_12= 'conditions' otherlv_13= '{' ( (lv_conditions_14_0= ruleDatamartCondition ) )* otherlv_15= '}'
+                    {
+                    otherlv_12=(Token)match(input,23,FOLLOW_23_in_ruleDatamartEntity1817); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_12, grammarAccess.getDatamartEntityAccess().getConditionsKeyword_6_0());
+                          
+                    }
+                    otherlv_13=(Token)match(input,14,FOLLOW_14_in_ruleDatamartEntity1829); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_13, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_6_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:839:1: ( (lv_conditions_14_0= ruleDatamartCondition ) )*
+                    loop20:
+                    do {
+                        int alt20=2;
+                        int LA20_0 = input.LA(1);
+
+                        if ( (LA20_0==42) ) {
+                            alt20=1;
+                        }
+
+
+                        switch (alt20) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:840:1: (lv_conditions_14_0= ruleDatamartCondition )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:840:1: (lv_conditions_14_0= ruleDatamartCondition )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:841:3: lv_conditions_14_0= ruleDatamartCondition
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getConditionsDatamartConditionParserRuleCall_6_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartCondition_in_ruleDatamartEntity1850);
+                    	    lv_conditions_14_0=ruleDatamartCondition();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"conditions",
+                    	              		lv_conditions_14_0, 
+                    	              		"DatamartCondition");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop20;
+                        }
+                    } while (true);
+
+                    otherlv_15=(Token)match(input,15,FOLLOW_15_in_ruleDatamartEntity1863); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_15, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_6_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:861:3: (otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}' )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==33) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:861:5: otherlv_16= 'ordering' otherlv_17= '{' ( (lv_ordering_18_0= ruleDatamartOrder ) )* otherlv_19= '}'
+                    {
+                    otherlv_16=(Token)match(input,33,FOLLOW_33_in_ruleDatamartEntity1878); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_16, grammarAccess.getDatamartEntityAccess().getOrderingKeyword_7_0());
+                          
+                    }
+                    otherlv_17=(Token)match(input,14,FOLLOW_14_in_ruleDatamartEntity1890); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_17, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_7_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:869:1: ( (lv_ordering_18_0= ruleDatamartOrder ) )*
+                    loop22:
+                    do {
+                        int alt22=2;
+                        int LA22_0 = input.LA(1);
+
+                        if ( (LA22_0==43) ) {
+                            alt22=1;
+                        }
+
+
+                        switch (alt22) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:870:1: (lv_ordering_18_0= ruleDatamartOrder )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:870:1: (lv_ordering_18_0= ruleDatamartOrder )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:871:3: lv_ordering_18_0= ruleDatamartOrder
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getOrderingDatamartOrderParserRuleCall_7_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleDatamartOrder_in_ruleDatamartEntity1911);
+                    	    lv_ordering_18_0=ruleDatamartOrder();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"ordering",
+                    	              		lv_ordering_18_0, 
+                    	              		"DatamartOrder");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop22;
+                        }
+                    } while (true);
+
+                    otherlv_19=(Token)match(input,15,FOLLOW_15_in_ruleDatamartEntity1924); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_19, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_7_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:891:3: (otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}' )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==34) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:891:5: otherlv_20= 'filler rows' ( (lv_fillerMinCountRows_21_0= RULE_INT ) ) otherlv_22= 'to' ( (lv_fillerMaxCountRows_23_0= RULE_INT ) ) otherlv_24= '{' ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )* otherlv_26= '}'
+                    {
+                    otherlv_20=(Token)match(input,34,FOLLOW_34_in_ruleDatamartEntity1939); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_20, grammarAccess.getDatamartEntityAccess().getFillerRowsKeyword_8_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:895:1: ( (lv_fillerMinCountRows_21_0= RULE_INT ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:896:1: (lv_fillerMinCountRows_21_0= RULE_INT )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:896:1: (lv_fillerMinCountRows_21_0= RULE_INT )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:897:3: lv_fillerMinCountRows_21_0= RULE_INT
+                    {
+                    lv_fillerMinCountRows_21_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDatamartEntity1956); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(lv_fillerMinCountRows_21_0, grammarAccess.getDatamartEntityAccess().getFillerMinCountRowsINTTerminalRuleCall_8_1_0()); 
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartEntityRule());
+                      	        }
+                             		setWithLastConsumed(
+                             			current, 
+                             			"fillerMinCountRows",
+                              		lv_fillerMinCountRows_21_0, 
+                              		"INT");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_22=(Token)match(input,35,FOLLOW_35_in_ruleDatamartEntity1973); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_22, grammarAccess.getDatamartEntityAccess().getToKeyword_8_2());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:917:1: ( (lv_fillerMaxCountRows_23_0= RULE_INT ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:918:1: (lv_fillerMaxCountRows_23_0= RULE_INT )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:918:1: (lv_fillerMaxCountRows_23_0= RULE_INT )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:919:3: lv_fillerMaxCountRows_23_0= RULE_INT
+                    {
+                    lv_fillerMaxCountRows_23_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDatamartEntity1990); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(lv_fillerMaxCountRows_23_0, grammarAccess.getDatamartEntityAccess().getFillerMaxCountRowsINTTerminalRuleCall_8_3_0()); 
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartEntityRule());
+                      	        }
+                             		setWithLastConsumed(
+                             			current, 
+                             			"fillerMaxCountRows",
+                              		lv_fillerMaxCountRows_23_0, 
+                              		"INT");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_24=(Token)match(input,14,FOLLOW_14_in_ruleDatamartEntity2007); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_24, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_8_4());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:939:1: ( (lv_fillerDatas_25_0= rulePropertyFillerData ) )*
+                    loop24:
+                    do {
+                        int alt24=2;
+                        int LA24_0 = input.LA(1);
+
+                        if ( (LA24_0==74) ) {
+                            alt24=1;
+                        }
+
+
+                        switch (alt24) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:940:1: (lv_fillerDatas_25_0= rulePropertyFillerData )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:940:1: (lv_fillerDatas_25_0= rulePropertyFillerData )
+                    	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:941:3: lv_fillerDatas_25_0= rulePropertyFillerData
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDatamartEntityAccess().getFillerDatasPropertyFillerDataParserRuleCall_8_5_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_rulePropertyFillerData_in_ruleDatamartEntity2028);
+                    	    lv_fillerDatas_25_0=rulePropertyFillerData();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDatamartEntityRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"fillerDatas",
+                    	              		lv_fillerDatas_25_0, 
+                    	              		"PropertyFillerData");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop24;
+                        }
+                    } while (true);
+
+                    otherlv_26=(Token)match(input,15,FOLLOW_15_in_ruleDatamartEntity2041); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_26, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_8_6());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            otherlv_27=(Token)match(input,15,FOLLOW_15_in_ruleDatamartEntity2055); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_27, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_9());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartEntity"
+
+
+    // $ANTLR start "entryRuleDatamartNavigation"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:973:1: entryRuleDatamartNavigation returns [EObject current=null] : iv_ruleDatamartNavigation= ruleDatamartNavigation EOF ;
+    public final EObject entryRuleDatamartNavigation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartNavigation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:974:2: (iv_ruleDatamartNavigation= ruleDatamartNavigation EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:975:2: iv_ruleDatamartNavigation= ruleDatamartNavigation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartNavigationRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartNavigation_in_entryRuleDatamartNavigation2091);
+            iv_ruleDatamartNavigation=ruleDatamartNavigation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartNavigation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartNavigation2101); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartNavigation"
+
+
+    // $ANTLR start "ruleDatamartNavigation"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:982:1: ruleDatamartNavigation returns [EObject current=null] : (this_DatamartOwner_0= ruleDatamartOwner | this_DatamartMember_1= ruleDatamartMember ) ;
+    public final EObject ruleDatamartNavigation() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DatamartOwner_0 = null;
+
+        EObject this_DatamartMember_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:985:28: ( (this_DatamartOwner_0= ruleDatamartOwner | this_DatamartMember_1= ruleDatamartMember ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:986:1: (this_DatamartOwner_0= ruleDatamartOwner | this_DatamartMember_1= ruleDatamartMember )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:986:1: (this_DatamartOwner_0= ruleDatamartOwner | this_DatamartMember_1= ruleDatamartMember )
+            int alt26=2;
+            int LA26_0 = input.LA(1);
+
+            if ( (LA26_0==36) ) {
+                alt26=1;
+            }
+            else if ( (LA26_0==37) ) {
+                alt26=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 26, 0, input);
+
+                throw nvae;
+            }
+            switch (alt26) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:987:5: this_DatamartOwner_0= ruleDatamartOwner
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartNavigationAccess().getDatamartOwnerParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartOwner_in_ruleDatamartNavigation2148);
+                    this_DatamartOwner_0=ruleDatamartOwner();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartOwner_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:997:5: this_DatamartMember_1= ruleDatamartMember
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartNavigationAccess().getDatamartMemberParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartMember_in_ruleDatamartNavigation2175);
+                    this_DatamartMember_1=ruleDatamartMember();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartMember_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartNavigation"
+
+
+    // $ANTLR start "entryRuleDatamartOwner"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1013:1: entryRuleDatamartOwner returns [EObject current=null] : iv_ruleDatamartOwner= ruleDatamartOwner EOF ;
+    public final EObject entryRuleDatamartOwner() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartOwner = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1014:2: (iv_ruleDatamartOwner= ruleDatamartOwner EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1015:2: iv_ruleDatamartOwner= ruleDatamartOwner EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartOwnerRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartOwner_in_entryRuleDatamartOwner2210);
+            iv_ruleDatamartOwner=ruleDatamartOwner();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartOwner; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartOwner2220); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartOwner"
+
+
+    // $ANTLR start "ruleDatamartOwner"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1022:1: ruleDatamartOwner returns [EObject current=null] : (otherlv_0= 'many to one' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) ) ;
+    public final EObject ruleDatamartOwner() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        EObject lv_joinRef_1_0 = null;
+
+        EObject lv_datamartEntity_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1025:28: ( (otherlv_0= 'many to one' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1026:1: (otherlv_0= 'many to one' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1026:1: (otherlv_0= 'many to one' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1026:3: otherlv_0= 'many to one' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) )
+            {
+            otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleDatamartOwner2257); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartOwnerAccess().getManyToOneKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1030:1: ( (lv_joinRef_1_0= ruleDatamartReference ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1031:1: (lv_joinRef_1_0= ruleDatamartReference )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1031:1: (lv_joinRef_1_0= ruleDatamartReference )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1032:3: lv_joinRef_1_0= ruleDatamartReference
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartOwnerAccess().getJoinRefDatamartReferenceParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartReference_in_ruleDatamartOwner2278);
+            lv_joinRef_1_0=ruleDatamartReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartOwnerRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"joinRef",
+                      		lv_joinRef_1_0, 
+                      		"DatamartReference");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleDatamartOwner2290); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDatamartOwnerAccess().getToKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1052:1: ( (lv_datamartEntity_3_0= ruleDatamartEntity ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1053:1: (lv_datamartEntity_3_0= ruleDatamartEntity )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1053:1: (lv_datamartEntity_3_0= ruleDatamartEntity )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1054:3: lv_datamartEntity_3_0= ruleDatamartEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartOwnerAccess().getDatamartEntityDatamartEntityParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartEntity_in_ruleDatamartOwner2311);
+            lv_datamartEntity_3_0=ruleDatamartEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartOwnerRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"datamartEntity",
+                      		lv_datamartEntity_3_0, 
+                      		"DatamartEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartOwner"
+
+
+    // $ANTLR start "entryRuleDatamartMember"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1078:1: entryRuleDatamartMember returns [EObject current=null] : iv_ruleDatamartMember= ruleDatamartMember EOF ;
+    public final EObject entryRuleDatamartMember() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartMember = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1079:2: (iv_ruleDatamartMember= ruleDatamartMember EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1080:2: iv_ruleDatamartMember= ruleDatamartMember EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartMemberRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartMember_in_entryRuleDatamartMember2347);
+            iv_ruleDatamartMember=ruleDatamartMember();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartMember; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartMember2357); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartMember"
+
+
+    // $ANTLR start "ruleDatamartMember"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1087:1: ruleDatamartMember returns [EObject current=null] : (otherlv_0= 'one to many' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) ) ;
+    public final EObject ruleDatamartMember() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        EObject lv_joinRef_1_0 = null;
+
+        EObject lv_datamartEntity_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1090:28: ( (otherlv_0= 'one to many' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1091:1: (otherlv_0= 'one to many' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1091:1: (otherlv_0= 'one to many' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1091:3: otherlv_0= 'one to many' ( (lv_joinRef_1_0= ruleDatamartReference ) ) otherlv_2= 'to' ( (lv_datamartEntity_3_0= ruleDatamartEntity ) )
+            {
+            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleDatamartMember2394); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartMemberAccess().getOneToManyKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1095:1: ( (lv_joinRef_1_0= ruleDatamartReference ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1096:1: (lv_joinRef_1_0= ruleDatamartReference )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1096:1: (lv_joinRef_1_0= ruleDatamartReference )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1097:3: lv_joinRef_1_0= ruleDatamartReference
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartMemberAccess().getJoinRefDatamartReferenceParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartReference_in_ruleDatamartMember2415);
+            lv_joinRef_1_0=ruleDatamartReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartMemberRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"joinRef",
+                      		lv_joinRef_1_0, 
+                      		"DatamartReference");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleDatamartMember2427); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDatamartMemberAccess().getToKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1117:1: ( (lv_datamartEntity_3_0= ruleDatamartEntity ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1118:1: (lv_datamartEntity_3_0= ruleDatamartEntity )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1118:1: (lv_datamartEntity_3_0= ruleDatamartEntity )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1119:3: lv_datamartEntity_3_0= ruleDatamartEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartMemberAccess().getDatamartEntityDatamartEntityParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartEntity_in_ruleDatamartMember2448);
+            lv_datamartEntity_3_0=ruleDatamartEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartMemberRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"datamartEntity",
+                      		lv_datamartEntity_3_0, 
+                      		"DatamartEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartMember"
+
+
+    // $ANTLR start "entryRuleDatamartProperty"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1143:1: entryRuleDatamartProperty returns [EObject current=null] : iv_ruleDatamartProperty= ruleDatamartProperty EOF ;
+    public final EObject entryRuleDatamartProperty() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartProperty = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1144:2: (iv_ruleDatamartProperty= ruleDatamartProperty EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1145:2: iv_ruleDatamartProperty= ruleDatamartProperty EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartPropertyRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartProperty_in_entryRuleDatamartProperty2484);
+            iv_ruleDatamartProperty=ruleDatamartProperty();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartProperty; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartProperty2494); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartProperty"
+
+
+    // $ANTLR start "ruleDatamartProperty"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1152:1: ruleDatamartProperty returns [EObject current=null] : (otherlv_0= 'property' ( (otherlv_1= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) ) ) ) ;
+    public final EObject ruleDatamartProperty() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_aggregated_3_0=null;
+        Token lv_placed_5_0=null;
+        Token lv_scaled_7_0=null;
+        Enumerator lv_aggregate_4_0 = null;
+
+        Enumerator lv_axis_6_0 = null;
+
+        Enumerator lv_scale_8_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1155:28: ( (otherlv_0= 'property' ( (otherlv_1= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1156:1: (otherlv_0= 'property' ( (otherlv_1= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1156:1: (otherlv_0= 'property' ( (otherlv_1= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1156:3: otherlv_0= 'property' ( (otherlv_1= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) ) )
+            {
+            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleDatamartProperty2531); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartPropertyAccess().getPropertyKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1160:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1161:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1161:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1162:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartPropertyRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartProperty2551); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartPropertyAccess().getPropertyRefLEntityAttributeCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1173:2: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1175:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1175:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1176:2: ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1179:2: ( ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1180:3: ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )*
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1180:3: ( ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) ) )*
+            loop27:
+            do {
+                int alt27=4;
+                int LA27_0 = input.LA(1);
+
+                if ( LA27_0 ==39 && getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 0) ) {
+                    alt27=1;
+                }
+                else if ( LA27_0 ==40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 1) ) {
+                    alt27=2;
+                }
+                else if ( LA27_0 ==41 && getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 2) ) {
+                    alt27=3;
+                }
+
+
+                switch (alt27) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1182:4: ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1182:4: ({...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1183:5: {...}? => ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleDatamartProperty", "getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 0)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1183:113: ( ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1184:6: ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 0);
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1187:6: ({...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1187:7: {...}? => ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleDatamartProperty", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1187:16: ( ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1187:17: ( (lv_aggregated_3_0= 'aggregate' ) ) ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1187:17: ( (lv_aggregated_3_0= 'aggregate' ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1188:1: (lv_aggregated_3_0= 'aggregate' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1188:1: (lv_aggregated_3_0= 'aggregate' )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1189:3: lv_aggregated_3_0= 'aggregate'
+            	    {
+            	    lv_aggregated_3_0=(Token)match(input,39,FOLLOW_39_in_ruleDatamartProperty2615); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_aggregated_3_0, grammarAccess.getDatamartPropertyAccess().getAggregatedAggregateKeyword_2_0_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getDatamartPropertyRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "aggregated", true, "aggregate");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1202:2: ( (lv_aggregate_4_0= ruleSqlAggregationEnum ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1203:1: (lv_aggregate_4_0= ruleSqlAggregationEnum )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1203:1: (lv_aggregate_4_0= ruleSqlAggregationEnum )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1204:3: lv_aggregate_4_0= ruleSqlAggregationEnum
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartPropertyAccess().getAggregateSqlAggregationEnumEnumRuleCall_2_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleSqlAggregationEnum_in_ruleDatamartProperty2649);
+            	    lv_aggregate_4_0=ruleSqlAggregationEnum();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartPropertyRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"aggregate",
+            	              		lv_aggregate_4_0, 
+            	              		"SqlAggregationEnum");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1227:4: ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1227:4: ({...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1228:5: {...}? => ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleDatamartProperty", "getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 1)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1228:113: ( ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1229:6: ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 1);
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1232:6: ({...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1232:7: {...}? => ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleDatamartProperty", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1232:16: ( ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1232:17: ( (lv_placed_5_0= 'on axis' ) ) ( (lv_axis_6_0= ruleAxisEnum ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1232:17: ( (lv_placed_5_0= 'on axis' ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1233:1: (lv_placed_5_0= 'on axis' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1233:1: (lv_placed_5_0= 'on axis' )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1234:3: lv_placed_5_0= 'on axis'
+            	    {
+            	    lv_placed_5_0=(Token)match(input,40,FOLLOW_40_in_ruleDatamartProperty2723); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_placed_5_0, grammarAccess.getDatamartPropertyAccess().getPlacedOnAxisKeyword_2_1_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getDatamartPropertyRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "placed", true, "on axis");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1247:2: ( (lv_axis_6_0= ruleAxisEnum ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1248:1: (lv_axis_6_0= ruleAxisEnum )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1248:1: (lv_axis_6_0= ruleAxisEnum )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1249:3: lv_axis_6_0= ruleAxisEnum
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartPropertyAccess().getAxisAxisEnumEnumRuleCall_2_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleAxisEnum_in_ruleDatamartProperty2757);
+            	    lv_axis_6_0=ruleAxisEnum();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartPropertyRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"axis",
+            	              		lv_axis_6_0, 
+            	              		"AxisEnum");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 3 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1272:4: ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1272:4: ({...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1273:5: {...}? => ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 2) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleDatamartProperty", "getUnorderedGroupHelper().canSelect(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 2)");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1273:113: ( ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1274:6: ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2(), 2);
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1277:6: ({...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1277:7: {...}? => ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleDatamartProperty", "true");
+            	    }
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1277:16: ( ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1277:17: ( (lv_scaled_7_0= 'scale' ) ) ( (lv_scale_8_0= ruleValueScaleEnum ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1277:17: ( (lv_scaled_7_0= 'scale' ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1278:1: (lv_scaled_7_0= 'scale' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1278:1: (lv_scaled_7_0= 'scale' )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1279:3: lv_scaled_7_0= 'scale'
+            	    {
+            	    lv_scaled_7_0=(Token)match(input,41,FOLLOW_41_in_ruleDatamartProperty2831); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              newLeafNode(lv_scaled_7_0, grammarAccess.getDatamartPropertyAccess().getScaledScaleKeyword_2_2_0_0());
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getDatamartPropertyRule());
+            	      	        }
+            	             		setWithLastConsumed(current, "scaled", true, "scale");
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1292:2: ( (lv_scale_8_0= ruleValueScaleEnum ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1293:1: (lv_scale_8_0= ruleValueScaleEnum )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1293:1: (lv_scale_8_0= ruleValueScaleEnum )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1294:3: lv_scale_8_0= ruleValueScaleEnum
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartPropertyAccess().getScaleValueScaleEnumEnumRuleCall_2_2_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleValueScaleEnum_in_ruleDatamartProperty2865);
+            	    lv_scale_8_0=ruleValueScaleEnum();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartPropertyRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"scale",
+            	              		lv_scale_8_0, 
+            	              		"ValueScaleEnum");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop27;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getDatamartPropertyAccess().getUnorderedGroup_2());
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartProperty"
+
+
+    // $ANTLR start "entryRuleDatamartCondition"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1332:1: entryRuleDatamartCondition returns [EObject current=null] : iv_ruleDatamartCondition= ruleDatamartCondition EOF ;
+    public final EObject entryRuleDatamartCondition() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartCondition = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1333:2: (iv_ruleDatamartCondition= ruleDatamartCondition EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1334:2: iv_ruleDatamartCondition= ruleDatamartCondition EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartConditionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartCondition_in_entryRuleDatamartCondition2942);
+            iv_ruleDatamartCondition=ruleDatamartCondition();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartCondition; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartCondition2952); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartCondition"
+
+
+    // $ANTLR start "ruleDatamartCondition"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1341:1: ruleDatamartCondition returns [EObject current=null] : (otherlv_0= 'condition' ( (lv_condition_1_0= ruleDatamartDisjunction ) ) ) ;
+    public final EObject ruleDatamartCondition() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_condition_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1344:28: ( (otherlv_0= 'condition' ( (lv_condition_1_0= ruleDatamartDisjunction ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1345:1: (otherlv_0= 'condition' ( (lv_condition_1_0= ruleDatamartDisjunction ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1345:1: (otherlv_0= 'condition' ( (lv_condition_1_0= ruleDatamartDisjunction ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1345:3: otherlv_0= 'condition' ( (lv_condition_1_0= ruleDatamartDisjunction ) )
+            {
+            otherlv_0=(Token)match(input,42,FOLLOW_42_in_ruleDatamartCondition2989); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartConditionAccess().getConditionKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1349:1: ( (lv_condition_1_0= ruleDatamartDisjunction ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1350:1: (lv_condition_1_0= ruleDatamartDisjunction )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1350:1: (lv_condition_1_0= ruleDatamartDisjunction )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1351:3: lv_condition_1_0= ruleDatamartDisjunction
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartConditionAccess().getConditionDatamartDisjunctionParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartDisjunction_in_ruleDatamartCondition3010);
+            lv_condition_1_0=ruleDatamartDisjunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartConditionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"condition",
+                      		lv_condition_1_0, 
+                      		"DatamartDisjunction");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartCondition"
+
+
+    // $ANTLR start "entryRuleDatamartOrder"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1375:1: entryRuleDatamartOrder returns [EObject current=null] : iv_ruleDatamartOrder= ruleDatamartOrder EOF ;
+    public final EObject entryRuleDatamartOrder() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartOrder = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1376:2: (iv_ruleDatamartOrder= ruleDatamartOrder EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1377:2: iv_ruleDatamartOrder= ruleDatamartOrder EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartOrderRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartOrder_in_entryRuleDatamartOrder3046);
+            iv_ruleDatamartOrder=ruleDatamartOrder();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartOrder; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartOrder3056); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartOrder"
+
+
+    // $ANTLR start "ruleDatamartOrder"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1384:1: ruleDatamartOrder returns [EObject current=null] : (otherlv_0= 'order' ( (otherlv_1= RULE_ID ) ) ( (lv_orderHow_2_0= ruleOrderEnum ) ) ) ;
+    public final EObject ruleDatamartOrder() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Enumerator lv_orderHow_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1387:28: ( (otherlv_0= 'order' ( (otherlv_1= RULE_ID ) ) ( (lv_orderHow_2_0= ruleOrderEnum ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1388:1: (otherlv_0= 'order' ( (otherlv_1= RULE_ID ) ) ( (lv_orderHow_2_0= ruleOrderEnum ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1388:1: (otherlv_0= 'order' ( (otherlv_1= RULE_ID ) ) ( (lv_orderHow_2_0= ruleOrderEnum ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1388:3: otherlv_0= 'order' ( (otherlv_1= RULE_ID ) ) ( (lv_orderHow_2_0= ruleOrderEnum ) )
+            {
+            otherlv_0=(Token)match(input,43,FOLLOW_43_in_ruleDatamartOrder3093); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartOrderAccess().getOrderKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1392:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1393:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1393:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1394:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartOrderRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartOrder3113); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartOrderAccess().getOrderByLEntityAttributeCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1405:2: ( (lv_orderHow_2_0= ruleOrderEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1406:1: (lv_orderHow_2_0= ruleOrderEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1406:1: (lv_orderHow_2_0= ruleOrderEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1407:3: lv_orderHow_2_0= ruleOrderEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartOrderAccess().getOrderHowOrderEnumEnumRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleOrderEnum_in_ruleDatamartOrder3134);
+            lv_orderHow_2_0=ruleOrderEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartOrderRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"orderHow",
+                      		lv_orderHow_2_0, 
+                      		"OrderEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartOrder"
+
+
+    // $ANTLR start "entryRuleDatamartDisjunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1431:1: entryRuleDatamartDisjunction returns [EObject current=null] : iv_ruleDatamartDisjunction= ruleDatamartDisjunction EOF ;
+    public final EObject entryRuleDatamartDisjunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartDisjunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1432:2: (iv_ruleDatamartDisjunction= ruleDatamartDisjunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1433:2: iv_ruleDatamartDisjunction= ruleDatamartDisjunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartDisjunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartDisjunction_in_entryRuleDatamartDisjunction3170);
+            iv_ruleDatamartDisjunction=ruleDatamartDisjunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartDisjunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartDisjunction3180); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartDisjunction"
+
+
+    // $ANTLR start "ruleDatamartDisjunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1440:1: ruleDatamartDisjunction returns [EObject current=null] : (this_DatamartConjunction_0= ruleDatamartConjunction ( ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) ) )* ) ;
+    public final EObject ruleDatamartDisjunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_DatamartConjunction_0 = null;
+
+        EObject lv_right_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1443:28: ( (this_DatamartConjunction_0= ruleDatamartConjunction ( ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1444:1: (this_DatamartConjunction_0= ruleDatamartConjunction ( ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1444:1: (this_DatamartConjunction_0= ruleDatamartConjunction ( ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1445:5: this_DatamartConjunction_0= ruleDatamartConjunction ( ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getDatamartDisjunctionAccess().getDatamartConjunctionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleDatamartConjunction_in_ruleDatamartDisjunction3227);
+            this_DatamartConjunction_0=ruleDatamartConjunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_DatamartConjunction_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1453:1: ( ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) ) )*
+            loop28:
+            do {
+                int alt28=2;
+                int LA28_0 = input.LA(1);
+
+                if ( (LA28_0==44) ) {
+                    alt28=1;
+                }
+
+
+                switch (alt28) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1453:2: ( () otherlv_2= 'or' ) ( (lv_right_3_0= ruleDatamartConjunction ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1453:2: ( () otherlv_2= 'or' )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1453:3: () otherlv_2= 'or'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1453:3: ()
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1454:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,44,FOLLOW_44_in_ruleDatamartDisjunction3249); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getDatamartDisjunctionAccess().getOrKeyword_1_0_1());
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1463:2: ( (lv_right_3_0= ruleDatamartConjunction ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1464:1: (lv_right_3_0= ruleDatamartConjunction )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1464:1: (lv_right_3_0= ruleDatamartConjunction )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1465:3: lv_right_3_0= ruleDatamartConjunction
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartDisjunctionAccess().getRightDatamartConjunctionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartConjunction_in_ruleDatamartDisjunction3271);
+            	    lv_right_3_0=ruleDatamartConjunction();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartDisjunctionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"right",
+            	              		lv_right_3_0, 
+            	              		"DatamartConjunction");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop28;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartDisjunction"
+
+
+    // $ANTLR start "entryRuleDatamartConjunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1489:1: entryRuleDatamartConjunction returns [EObject current=null] : iv_ruleDatamartConjunction= ruleDatamartConjunction EOF ;
+    public final EObject entryRuleDatamartConjunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartConjunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1490:2: (iv_ruleDatamartConjunction= ruleDatamartConjunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1491:2: iv_ruleDatamartConjunction= ruleDatamartConjunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartConjunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartConjunction_in_entryRuleDatamartConjunction3309);
+            iv_ruleDatamartConjunction=ruleDatamartConjunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartConjunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartConjunction3319); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartConjunction"
+
+
+    // $ANTLR start "ruleDatamartConjunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1498:1: ruleDatamartConjunction returns [EObject current=null] : (this_DatamartConditionalExpression_0= ruleDatamartConditionalExpression ( ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) ) )* ) ;
+    public final EObject ruleDatamartConjunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_DatamartConditionalExpression_0 = null;
+
+        EObject lv_right_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1501:28: ( (this_DatamartConditionalExpression_0= ruleDatamartConditionalExpression ( ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1502:1: (this_DatamartConditionalExpression_0= ruleDatamartConditionalExpression ( ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1502:1: (this_DatamartConditionalExpression_0= ruleDatamartConditionalExpression ( ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1503:5: this_DatamartConditionalExpression_0= ruleDatamartConditionalExpression ( ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getDatamartConjunctionAccess().getDatamartConditionalExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleDatamartConditionalExpression_in_ruleDatamartConjunction3366);
+            this_DatamartConditionalExpression_0=ruleDatamartConditionalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_DatamartConditionalExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1511:1: ( ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) ) )*
+            loop29:
+            do {
+                int alt29=2;
+                int LA29_0 = input.LA(1);
+
+                if ( (LA29_0==45) ) {
+                    alt29=1;
+                }
+
+
+                switch (alt29) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1511:2: ( () otherlv_2= 'and' ) ( (lv_right_3_0= ruleDatamartConditionalExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1511:2: ( () otherlv_2= 'and' )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1511:3: () otherlv_2= 'and'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1511:3: ()
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1512:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,45,FOLLOW_45_in_ruleDatamartConjunction3388); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getDatamartConjunctionAccess().getAndKeyword_1_0_1());
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1521:2: ( (lv_right_3_0= ruleDatamartConditionalExpression ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1522:1: (lv_right_3_0= ruleDatamartConditionalExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1522:1: (lv_right_3_0= ruleDatamartConditionalExpression )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1523:3: lv_right_3_0= ruleDatamartConditionalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartConjunctionAccess().getRightDatamartConditionalExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartConditionalExpression_in_ruleDatamartConjunction3410);
+            	    lv_right_3_0=ruleDatamartConditionalExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartConjunctionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"right",
+            	              		lv_right_3_0, 
+            	              		"DatamartConditionalExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop29;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartConjunction"
+
+
+    // $ANTLR start "entryRuleDatamartConditionalExpression"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1547:1: entryRuleDatamartConditionalExpression returns [EObject current=null] : iv_ruleDatamartConditionalExpression= ruleDatamartConditionalExpression EOF ;
+    public final EObject entryRuleDatamartConditionalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartConditionalExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1548:2: (iv_ruleDatamartConditionalExpression= ruleDatamartConditionalExpression EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1549:2: iv_ruleDatamartConditionalExpression= ruleDatamartConditionalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartConditionalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartConditionalExpression_in_entryRuleDatamartConditionalExpression3448);
+            iv_ruleDatamartConditionalExpression=ruleDatamartConditionalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartConditionalExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartConditionalExpression3458); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartConditionalExpression"
+
+
+    // $ANTLR start "ruleDatamartConditionalExpression"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1556:1: ruleDatamartConditionalExpression returns [EObject current=null] : (this_DatamartOperand_0= ruleDatamartOperand ( ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) ) )* ) ;
+    public final EObject ruleDatamartConditionalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DatamartOperand_0 = null;
+
+        Enumerator lv_operator_2_0 = null;
+
+        EObject lv_right_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1559:28: ( (this_DatamartOperand_0= ruleDatamartOperand ( ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1560:1: (this_DatamartOperand_0= ruleDatamartOperand ( ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1560:1: (this_DatamartOperand_0= ruleDatamartOperand ( ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1561:5: this_DatamartOperand_0= ruleDatamartOperand ( ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getDatamartConditionalExpressionAccess().getDatamartOperandParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleDatamartOperand_in_ruleDatamartConditionalExpression3505);
+            this_DatamartOperand_0=ruleDatamartOperand();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_DatamartOperand_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1569:1: ( ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) ) )*
+            loop30:
+            do {
+                int alt30=2;
+                int LA30_0 = input.LA(1);
+
+                if ( (LA30_0==97||(LA30_0>=106 && LA30_0<=108)||(LA30_0>=181 && LA30_0<=182)) ) {
+                    alt30=1;
+                }
+
+
+                switch (alt30) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1569:2: ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) ) ( (lv_right_3_0= ruleDatamartOperand ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1569:2: ( () ( (lv_operator_2_0= ruleOperatorEnum ) ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1569:3: () ( (lv_operator_2_0= ruleOperatorEnum ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1569:3: ()
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1570:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1575:2: ( (lv_operator_2_0= ruleOperatorEnum ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1576:1: (lv_operator_2_0= ruleOperatorEnum )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1576:1: (lv_operator_2_0= ruleOperatorEnum )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1577:3: lv_operator_2_0= ruleOperatorEnum
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartConditionalExpressionAccess().getOperatorOperatorEnumEnumRuleCall_1_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOperatorEnum_in_ruleDatamartConditionalExpression3536);
+            	    lv_operator_2_0=ruleOperatorEnum();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartConditionalExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"operator",
+            	              		lv_operator_2_0, 
+            	              		"OperatorEnum");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1593:3: ( (lv_right_3_0= ruleDatamartOperand ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1594:1: (lv_right_3_0= ruleDatamartOperand )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1594:1: (lv_right_3_0= ruleDatamartOperand )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1595:3: lv_right_3_0= ruleDatamartOperand
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartConditionalExpressionAccess().getRightDatamartOperandParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartOperand_in_ruleDatamartConditionalExpression3558);
+            	    lv_right_3_0=ruleDatamartOperand();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartConditionalExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"right",
+            	              		lv_right_3_0, 
+            	              		"DatamartOperand");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop30;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartConditionalExpression"
+
+
+    // $ANTLR start "entryRuleDatamartOperand"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1619:1: entryRuleDatamartOperand returns [EObject current=null] : iv_ruleDatamartOperand= ruleDatamartOperand EOF ;
+    public final EObject entryRuleDatamartOperand() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartOperand = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1620:2: (iv_ruleDatamartOperand= ruleDatamartOperand EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1621:2: iv_ruleDatamartOperand= ruleDatamartOperand EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartOperandRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartOperand_in_entryRuleDatamartOperand3596);
+            iv_ruleDatamartOperand=ruleDatamartOperand();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartOperand; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartOperand3606); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartOperand"
+
+
+    // $ANTLR start "ruleDatamartOperand"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1628:1: ruleDatamartOperand returns [EObject current=null] : (this_DatamartValue_0= ruleDatamartValue | (otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')' ) ) ;
+    public final EObject ruleDatamartOperand() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        EObject this_DatamartValue_0 = null;
+
+        EObject this_DatamartDisjunction_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1631:28: ( (this_DatamartValue_0= ruleDatamartValue | (otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')' ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1632:1: (this_DatamartValue_0= ruleDatamartValue | (otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')' ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1632:1: (this_DatamartValue_0= ruleDatamartValue | (otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')' ) )
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( ((LA31_0>=RULE_INT && LA31_0<=RULE_DECIMAL)||(LA31_0>=24 && LA31_0<=25)||LA31_0==38||LA31_0==48||LA31_0==50) ) {
+                alt31=1;
+            }
+            else if ( (LA31_0==46) ) {
+                alt31=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 31, 0, input);
+
+                throw nvae;
+            }
+            switch (alt31) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1633:5: this_DatamartValue_0= ruleDatamartValue
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartOperandAccess().getDatamartValueParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartValue_in_ruleDatamartOperand3653);
+                    this_DatamartValue_0=ruleDatamartValue();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartValue_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1642:6: (otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1642:6: (otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1642:8: otherlv_1= '(' this_DatamartDisjunction_2= ruleDatamartDisjunction otherlv_3= ')'
+                    {
+                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleDatamartOperand3671); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getDatamartOperandAccess().getLeftParenthesisKeyword_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartOperandAccess().getDatamartDisjunctionParserRuleCall_1_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartDisjunction_in_ruleDatamartOperand3693);
+                    this_DatamartDisjunction_2=ruleDatamartDisjunction();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartDisjunction_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleDatamartOperand3704); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getDatamartOperandAccess().getRightParenthesisKeyword_1_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartOperand"
+
+
+    // $ANTLR start "entryRuleDatamartValue"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1667:1: entryRuleDatamartValue returns [EObject current=null] : iv_ruleDatamartValue= ruleDatamartValue EOF ;
+    public final EObject entryRuleDatamartValue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartValue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1668:2: (iv_ruleDatamartValue= ruleDatamartValue EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1669:2: iv_ruleDatamartValue= ruleDatamartValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartValue_in_entryRuleDatamartValue3741);
+            iv_ruleDatamartValue=ruleDatamartValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartValue; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartValue3751); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartValue"
+
+
+    // $ANTLR start "ruleDatamartValue"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1676:1: ruleDatamartValue returns [EObject current=null] : ( ( (lv_numberValue_0_0= ruleNumber ) ) | ( (lv_stringValue_1_0= RULE_STRING ) ) | ( ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? ) | ( (lv_selected_4_0= 'selected' ) ) ) | this_DatamartProperty_5= ruleDatamartProperty | this_DatamartTaskFilter_6= ruleDatamartTaskFilter | this_DatamartColumn_7= ruleDatamartColumn ) ;
+    public final EObject ruleDatamartValue() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_stringValue_1_0=null;
+        Token lv_filtered_2_0=null;
+        Token lv_optional_3_0=null;
+        Token lv_selected_4_0=null;
+        AntlrDatatypeRuleToken lv_numberValue_0_0 = null;
+
+        EObject this_DatamartProperty_5 = null;
+
+        EObject this_DatamartTaskFilter_6 = null;
+
+        EObject this_DatamartColumn_7 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1679:28: ( ( ( (lv_numberValue_0_0= ruleNumber ) ) | ( (lv_stringValue_1_0= RULE_STRING ) ) | ( ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? ) | ( (lv_selected_4_0= 'selected' ) ) ) | this_DatamartProperty_5= ruleDatamartProperty | this_DatamartTaskFilter_6= ruleDatamartTaskFilter | this_DatamartColumn_7= ruleDatamartColumn ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1680:1: ( ( (lv_numberValue_0_0= ruleNumber ) ) | ( (lv_stringValue_1_0= RULE_STRING ) ) | ( ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? ) | ( (lv_selected_4_0= 'selected' ) ) ) | this_DatamartProperty_5= ruleDatamartProperty | this_DatamartTaskFilter_6= ruleDatamartTaskFilter | this_DatamartColumn_7= ruleDatamartColumn )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1680:1: ( ( (lv_numberValue_0_0= ruleNumber ) ) | ( (lv_stringValue_1_0= RULE_STRING ) ) | ( ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? ) | ( (lv_selected_4_0= 'selected' ) ) ) | this_DatamartProperty_5= ruleDatamartProperty | this_DatamartTaskFilter_6= ruleDatamartTaskFilter | this_DatamartColumn_7= ruleDatamartColumn )
+            int alt34=6;
+            switch ( input.LA(1) ) {
+            case RULE_INT:
+            case RULE_HEX:
+            case RULE_DECIMAL:
+                {
+                alt34=1;
+                }
+                break;
+            case RULE_STRING:
+                {
+                alt34=2;
+                }
+                break;
+            case 48:
+            case 50:
+                {
+                alt34=3;
+                }
+                break;
+            case 38:
+                {
+                alt34=4;
+                }
+                break;
+            case 25:
+                {
+                alt34=5;
+                }
+                break;
+            case 24:
+                {
+                alt34=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 34, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt34) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1680:2: ( (lv_numberValue_0_0= ruleNumber ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1680:2: ( (lv_numberValue_0_0= ruleNumber ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1681:1: (lv_numberValue_0_0= ruleNumber )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1681:1: (lv_numberValue_0_0= ruleNumber )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1682:3: lv_numberValue_0_0= ruleNumber
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartValueAccess().getNumberValueNumberParserRuleCall_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleNumber_in_ruleDatamartValue3797);
+                    lv_numberValue_0_0=ruleNumber();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartValueRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"numberValue",
+                              		lv_numberValue_0_0, 
+                              		"Number");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1699:6: ( (lv_stringValue_1_0= RULE_STRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1699:6: ( (lv_stringValue_1_0= RULE_STRING ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1700:1: (lv_stringValue_1_0= RULE_STRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1700:1: (lv_stringValue_1_0= RULE_STRING )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1701:3: lv_stringValue_1_0= RULE_STRING
+                    {
+                    lv_stringValue_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDatamartValue3820); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(lv_stringValue_1_0, grammarAccess.getDatamartValueAccess().getStringValueSTRINGTerminalRuleCall_1_0()); 
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartValueRule());
+                      	        }
+                             		setWithLastConsumed(
+                             			current, 
+                             			"stringValue",
+                              		lv_stringValue_1_0, 
+                              		"STRING");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1718:6: ( ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? ) | ( (lv_selected_4_0= 'selected' ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1718:6: ( ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? ) | ( (lv_selected_4_0= 'selected' ) ) )
+                    int alt33=2;
+                    int LA33_0 = input.LA(1);
+
+                    if ( (LA33_0==48) ) {
+                        alt33=1;
+                    }
+                    else if ( (LA33_0==50) ) {
+                        alt33=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 33, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt33) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1718:7: ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1718:7: ( ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )? )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1718:8: ( (lv_filtered_2_0= 'filtered' ) ) ( (lv_optional_3_0= 'optional' ) )?
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1718:8: ( (lv_filtered_2_0= 'filtered' ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1719:1: (lv_filtered_2_0= 'filtered' )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1719:1: (lv_filtered_2_0= 'filtered' )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1720:3: lv_filtered_2_0= 'filtered'
+                            {
+                            lv_filtered_2_0=(Token)match(input,48,FOLLOW_48_in_ruleDatamartValue3851); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_filtered_2_0, grammarAccess.getDatamartValueAccess().getFilteredFilteredKeyword_2_0_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartValueRule());
+                              	        }
+                                     		setWithLastConsumed(current, "filtered", true, "filtered");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1733:2: ( (lv_optional_3_0= 'optional' ) )?
+                            int alt32=2;
+                            int LA32_0 = input.LA(1);
+
+                            if ( (LA32_0==49) ) {
+                                alt32=1;
+                            }
+                            switch (alt32) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1734:1: (lv_optional_3_0= 'optional' )
+                                    {
+                                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1734:1: (lv_optional_3_0= 'optional' )
+                                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1735:3: lv_optional_3_0= 'optional'
+                                    {
+                                    lv_optional_3_0=(Token)match(input,49,FOLLOW_49_in_ruleDatamartValue3882); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                              newLeafNode(lv_optional_3_0, grammarAccess.getDatamartValueAccess().getOptionalOptionalKeyword_2_0_1_0());
+                                          
+                                    }
+                                    if ( state.backtracking==0 ) {
+
+                                      	        if (current==null) {
+                                      	            current = createModelElement(grammarAccess.getDatamartValueRule());
+                                      	        }
+                                             		setWithLastConsumed(current, "optional", true, "optional");
+                                      	    
+                                    }
+
+                                    }
+
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1749:6: ( (lv_selected_4_0= 'selected' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1749:6: ( (lv_selected_4_0= 'selected' ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1750:1: (lv_selected_4_0= 'selected' )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1750:1: (lv_selected_4_0= 'selected' )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1751:3: lv_selected_4_0= 'selected'
+                            {
+                            lv_selected_4_0=(Token)match(input,50,FOLLOW_50_in_ruleDatamartValue3921); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_selected_4_0, grammarAccess.getDatamartValueAccess().getSelectedSelectedKeyword_2_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartValueRule());
+                              	        }
+                                     		setWithLastConsumed(current, "selected", true, "selected");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1766:5: this_DatamartProperty_5= ruleDatamartProperty
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartValueAccess().getDatamartPropertyParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartProperty_in_ruleDatamartValue3963);
+                    this_DatamartProperty_5=ruleDatamartProperty();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartProperty_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1776:5: this_DatamartTaskFilter_6= ruleDatamartTaskFilter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartValueAccess().getDatamartTaskFilterParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartTaskFilter_in_ruleDatamartValue3990);
+                    this_DatamartTaskFilter_6=ruleDatamartTaskFilter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartTaskFilter_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1786:5: this_DatamartColumn_7= ruleDatamartColumn
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartValueAccess().getDatamartColumnParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartColumn_in_ruleDatamartValue4017);
+                    this_DatamartColumn_7=ruleDatamartColumn();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartColumn_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartValue"
+
+
+    // $ANTLR start "entryRuleDatamartCubeElement"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1802:1: entryRuleDatamartCubeElement returns [EObject current=null] : iv_ruleDatamartCubeElement= ruleDatamartCubeElement EOF ;
+    public final EObject entryRuleDatamartCubeElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartCubeElement = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1803:2: (iv_ruleDatamartCubeElement= ruleDatamartCubeElement EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1804:2: iv_ruleDatamartCubeElement= ruleDatamartCubeElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartCubeElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartCubeElement_in_entryRuleDatamartCubeElement4052);
+            iv_ruleDatamartCubeElement=ruleDatamartCubeElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartCubeElement; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartCubeElement4062); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartCubeElement"
+
+
+    // $ANTLR start "ruleDatamartCubeElement"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1811:1: ruleDatamartCubeElement returns [EObject current=null] : (this_DatamartAxis_0= ruleDatamartAxis | this_DatamartSlicer_1= ruleDatamartSlicer | this_DatamartDefineDerivedMeasure_2= ruleDatamartDefineDerivedMeasure ) ;
+    public final EObject ruleDatamartCubeElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DatamartAxis_0 = null;
+
+        EObject this_DatamartSlicer_1 = null;
+
+        EObject this_DatamartDefineDerivedMeasure_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1814:28: ( (this_DatamartAxis_0= ruleDatamartAxis | this_DatamartSlicer_1= ruleDatamartSlicer | this_DatamartDefineDerivedMeasure_2= ruleDatamartDefineDerivedMeasure ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1815:1: (this_DatamartAxis_0= ruleDatamartAxis | this_DatamartSlicer_1= ruleDatamartSlicer | this_DatamartDefineDerivedMeasure_2= ruleDatamartDefineDerivedMeasure )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1815:1: (this_DatamartAxis_0= ruleDatamartAxis | this_DatamartSlicer_1= ruleDatamartSlicer | this_DatamartDefineDerivedMeasure_2= ruleDatamartDefineDerivedMeasure )
+            int alt35=3;
+            switch ( input.LA(1) ) {
+            case 60:
+                {
+                alt35=1;
+                }
+                break;
+            case 59:
+                {
+                alt35=2;
+                }
+                break;
+            case 51:
+                {
+                alt35=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 35, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt35) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1816:5: this_DatamartAxis_0= ruleDatamartAxis
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartCubeElementAccess().getDatamartAxisParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartAxis_in_ruleDatamartCubeElement4109);
+                    this_DatamartAxis_0=ruleDatamartAxis();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartAxis_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1826:5: this_DatamartSlicer_1= ruleDatamartSlicer
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartCubeElementAccess().getDatamartSlicerParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartSlicer_in_ruleDatamartCubeElement4136);
+                    this_DatamartSlicer_1=ruleDatamartSlicer();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartSlicer_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1836:5: this_DatamartDefineDerivedMeasure_2= ruleDatamartDefineDerivedMeasure
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartCubeElementAccess().getDatamartDefineDerivedMeasureParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartDefineDerivedMeasure_in_ruleDatamartCubeElement4163);
+                    this_DatamartDefineDerivedMeasure_2=ruleDatamartDefineDerivedMeasure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartDefineDerivedMeasure_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartCubeElement"
+
+
+    // $ANTLR start "entryRuleDatamartDefineDerivedMeasure"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1852:1: entryRuleDatamartDefineDerivedMeasure returns [EObject current=null] : iv_ruleDatamartDefineDerivedMeasure= ruleDatamartDefineDerivedMeasure EOF ;
+    public final EObject entryRuleDatamartDefineDerivedMeasure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartDefineDerivedMeasure = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1853:2: (iv_ruleDatamartDefineDerivedMeasure= ruleDatamartDefineDerivedMeasure EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1854:2: iv_ruleDatamartDefineDerivedMeasure= ruleDatamartDefineDerivedMeasure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartDefineDerivedMeasureRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartDefineDerivedMeasure_in_entryRuleDatamartDefineDerivedMeasure4198);
+            iv_ruleDatamartDefineDerivedMeasure=ruleDatamartDefineDerivedMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartDefineDerivedMeasure; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartDefineDerivedMeasure4208); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartDefineDerivedMeasure"
+
+
+    // $ANTLR start "ruleDatamartDefineDerivedMeasure"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1861:1: ruleDatamartDefineDerivedMeasure returns [EObject current=null] : (otherlv_0= 'derive' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'from' ( (lv_derivedElement_3_0= ruleDatamartAddition ) )* ) ;
+    public final EObject ruleDatamartDefineDerivedMeasure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_derivedElement_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1864:28: ( (otherlv_0= 'derive' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'from' ( (lv_derivedElement_3_0= ruleDatamartAddition ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1865:1: (otherlv_0= 'derive' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'from' ( (lv_derivedElement_3_0= ruleDatamartAddition ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1865:1: (otherlv_0= 'derive' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'from' ( (lv_derivedElement_3_0= ruleDatamartAddition ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1865:3: otherlv_0= 'derive' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'from' ( (lv_derivedElement_3_0= ruleDatamartAddition ) )*
+            {
+            otherlv_0=(Token)match(input,51,FOLLOW_51_in_ruleDatamartDefineDerivedMeasure4245); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartDefineDerivedMeasureAccess().getDeriveKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1869:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1870:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1870:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1871:3: lv_name_1_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartDefineDerivedMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleDatamartDefineDerivedMeasure4266);
+            lv_name_1_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartDefineDerivedMeasureRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"TRANSLATABLEID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,52,FOLLOW_52_in_ruleDatamartDefineDerivedMeasure4278); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDatamartDefineDerivedMeasureAccess().getFromKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1891:1: ( (lv_derivedElement_3_0= ruleDatamartAddition ) )*
+            loop36:
+            do {
+                int alt36=2;
+                int LA36_0 = input.LA(1);
+
+                if ( (LA36_0==RULE_INT||(LA36_0>=RULE_HEX && LA36_0<=RULE_DECIMAL)||LA36_0==39||LA36_0==46||(LA36_0>=61 && LA36_0<=63)||(LA36_0>=162 && LA36_0<=167)||(LA36_0>=178 && LA36_0<=180)) ) {
+                    alt36=1;
+                }
+
+
+                switch (alt36) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1892:1: (lv_derivedElement_3_0= ruleDatamartAddition )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1892:1: (lv_derivedElement_3_0= ruleDatamartAddition )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1893:3: lv_derivedElement_3_0= ruleDatamartAddition
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartDefineDerivedMeasureAccess().getDerivedElementDatamartAdditionParserRuleCall_3_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartAddition_in_ruleDatamartDefineDerivedMeasure4299);
+            	    lv_derivedElement_3_0=ruleDatamartAddition();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartDefineDerivedMeasureRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"derivedElement",
+            	              		lv_derivedElement_3_0, 
+            	              		"DatamartAddition");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop36;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartDefineDerivedMeasure"
+
+
+    // $ANTLR start "entryRuleDatamartAddition"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1917:1: entryRuleDatamartAddition returns [EObject current=null] : iv_ruleDatamartAddition= ruleDatamartAddition EOF ;
+    public final EObject entryRuleDatamartAddition() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartAddition = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1918:2: (iv_ruleDatamartAddition= ruleDatamartAddition EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1919:2: iv_ruleDatamartAddition= ruleDatamartAddition EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartAdditionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartAddition_in_entryRuleDatamartAddition4336);
+            iv_ruleDatamartAddition=ruleDatamartAddition();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartAddition; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartAddition4346); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartAddition"
+
+
+    // $ANTLR start "ruleDatamartAddition"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1926:1: ruleDatamartAddition returns [EObject current=null] : (this_DatamartMultiplication_0= ruleDatamartMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) ) )* ) ;
+    public final EObject ruleDatamartAddition() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject this_DatamartMultiplication_0 = null;
+
+        EObject lv_right_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1929:28: ( (this_DatamartMultiplication_0= ruleDatamartMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1930:1: (this_DatamartMultiplication_0= ruleDatamartMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1930:1: (this_DatamartMultiplication_0= ruleDatamartMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1931:5: this_DatamartMultiplication_0= ruleDatamartMultiplication ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getDatamartAdditionAccess().getDatamartMultiplicationParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleDatamartMultiplication_in_ruleDatamartAddition4393);
+            this_DatamartMultiplication_0=ruleDatamartMultiplication();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_DatamartMultiplication_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:1: ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) ) )*
+            loop38:
+            do {
+                int alt38=2;
+                int LA38_0 = input.LA(1);
+
+                if ( ((LA38_0>=53 && LA38_0<=54)) ) {
+                    alt38=1;
+                }
+
+
+                switch (alt38) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:2: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleDatamartMultiplication ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:2: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) )
+            	    int alt37=2;
+            	    int LA37_0 = input.LA(1);
+
+            	    if ( (LA37_0==53) ) {
+            	        alt37=1;
+            	    }
+            	    else if ( (LA37_0==54) ) {
+            	        alt37=2;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 37, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt37) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:3: ( () otherlv_2= '+' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:3: ( () otherlv_2= '+' )
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:4: () otherlv_2= '+'
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1939:4: ()
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1940:5: 
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	                      current = forceCreateModelElementAndSet(
+            	                          grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0(),
+            	                          current);
+            	                  
+            	            }
+
+            	            }
+
+            	            otherlv_2=(Token)match(input,53,FOLLOW_53_in_ruleDatamartAddition4416); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                  	newLeafNode(otherlv_2, grammarAccess.getDatamartAdditionAccess().getPlusSignKeyword_1_0_0_1());
+            	                  
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1950:6: ( () otherlv_4= '-' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1950:6: ( () otherlv_4= '-' )
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1950:7: () otherlv_4= '-'
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1950:7: ()
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1951:5: 
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	                      current = forceCreateModelElementAndSet(
+            	                          grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0(),
+            	                          current);
+            	                  
+            	            }
+
+            	            }
+
+            	            otherlv_4=(Token)match(input,54,FOLLOW_54_in_ruleDatamartAddition4445); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                  	newLeafNode(otherlv_4, grammarAccess.getDatamartAdditionAccess().getHyphenMinusKeyword_1_0_1_1());
+            	                  
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1960:3: ( (lv_right_5_0= ruleDatamartMultiplication ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1961:1: (lv_right_5_0= ruleDatamartMultiplication )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1961:1: (lv_right_5_0= ruleDatamartMultiplication )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1962:3: lv_right_5_0= ruleDatamartMultiplication
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartAdditionAccess().getRightDatamartMultiplicationParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartMultiplication_in_ruleDatamartAddition4468);
+            	    lv_right_5_0=ruleDatamartMultiplication();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartAdditionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"right",
+            	              		lv_right_5_0, 
+            	              		"DatamartMultiplication");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop38;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartAddition"
+
+
+    // $ANTLR start "entryRuleDatamartMultiplication"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1986:1: entryRuleDatamartMultiplication returns [EObject current=null] : iv_ruleDatamartMultiplication= ruleDatamartMultiplication EOF ;
+    public final EObject entryRuleDatamartMultiplication() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartMultiplication = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1987:2: (iv_ruleDatamartMultiplication= ruleDatamartMultiplication EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1988:2: iv_ruleDatamartMultiplication= ruleDatamartMultiplication EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartMultiplicationRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartMultiplication_in_entryRuleDatamartMultiplication4506);
+            iv_ruleDatamartMultiplication=ruleDatamartMultiplication();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartMultiplication; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartMultiplication4516); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartMultiplication"
+
+
+    // $ANTLR start "ruleDatamartMultiplication"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1995:1: ruleDatamartMultiplication returns [EObject current=null] : (this_DatamartPrimary_0= ruleDatamartPrimary ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) ) )* ) ;
+    public final EObject ruleDatamartMultiplication() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject this_DatamartPrimary_0 = null;
+
+        EObject lv_right_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1998:28: ( (this_DatamartPrimary_0= ruleDatamartPrimary ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1999:1: (this_DatamartPrimary_0= ruleDatamartPrimary ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:1999:1: (this_DatamartPrimary_0= ruleDatamartPrimary ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) ) )* )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2000:5: this_DatamartPrimary_0= ruleDatamartPrimary ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getDatamartMultiplicationAccess().getDatamartPrimaryParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleDatamartPrimary_in_ruleDatamartMultiplication4563);
+            this_DatamartPrimary_0=ruleDatamartPrimary();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_DatamartPrimary_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:1: ( ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) ) )*
+            loop40:
+            do {
+                int alt40=2;
+                int LA40_0 = input.LA(1);
+
+                if ( ((LA40_0>=55 && LA40_0<=56)) ) {
+                    alt40=1;
+                }
+
+
+                switch (alt40) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:2: ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) ) ( (lv_right_5_0= ruleDatamartPrimary ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:2: ( ( () otherlv_2= '*' ) | ( () otherlv_4= '/' ) )
+            	    int alt39=2;
+            	    int LA39_0 = input.LA(1);
+
+            	    if ( (LA39_0==55) ) {
+            	        alt39=1;
+            	    }
+            	    else if ( (LA39_0==56) ) {
+            	        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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:3: ( () otherlv_2= '*' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:3: ( () otherlv_2= '*' )
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:4: () otherlv_2= '*'
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2008:4: ()
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2009:5: 
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	                      current = forceCreateModelElementAndSet(
+            	                          grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0(),
+            	                          current);
+            	                  
+            	            }
+
+            	            }
+
+            	            otherlv_2=(Token)match(input,55,FOLLOW_55_in_ruleDatamartMultiplication4586); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                  	newLeafNode(otherlv_2, grammarAccess.getDatamartMultiplicationAccess().getAsteriskKeyword_1_0_0_1());
+            	                  
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2019:6: ( () otherlv_4= '/' )
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2019:6: ( () otherlv_4= '/' )
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2019:7: () otherlv_4= '/'
+            	            {
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2019:7: ()
+            	            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2020:5: 
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	                      current = forceCreateModelElementAndSet(
+            	                          grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0(),
+            	                          current);
+            	                  
+            	            }
+
+            	            }
+
+            	            otherlv_4=(Token)match(input,56,FOLLOW_56_in_ruleDatamartMultiplication4615); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                  	newLeafNode(otherlv_4, grammarAccess.getDatamartMultiplicationAccess().getSolidusKeyword_1_0_1_1());
+            	                  
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2029:3: ( (lv_right_5_0= ruleDatamartPrimary ) )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2030:1: (lv_right_5_0= ruleDatamartPrimary )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2030:1: (lv_right_5_0= ruleDatamartPrimary )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2031:3: lv_right_5_0= ruleDatamartPrimary
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartMultiplicationAccess().getRightDatamartPrimaryParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartPrimary_in_ruleDatamartMultiplication4638);
+            	    lv_right_5_0=ruleDatamartPrimary();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartMultiplicationRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"right",
+            	              		lv_right_5_0, 
+            	              		"DatamartPrimary");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop40;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartMultiplication"
+
+
+    // $ANTLR start "entryRuleDatamartPrimary"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2055:1: entryRuleDatamartPrimary returns [EObject current=null] : iv_ruleDatamartPrimary= ruleDatamartPrimary EOF ;
+    public final EObject entryRuleDatamartPrimary() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartPrimary = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2056:2: (iv_ruleDatamartPrimary= ruleDatamartPrimary EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2057:2: iv_ruleDatamartPrimary= ruleDatamartPrimary EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartPrimaryRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartPrimary_in_entryRuleDatamartPrimary4676);
+            iv_ruleDatamartPrimary=ruleDatamartPrimary();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartPrimary; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartPrimary4686); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartPrimary"
+
+
+    // $ANTLR start "ruleDatamartPrimary"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2064:1: ruleDatamartPrimary returns [EObject current=null] : (this_DatamartNumberOrElement_0= ruleDatamartNumberOrElement | (otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')' ) ) ;
+    public final EObject ruleDatamartPrimary() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        EObject this_DatamartNumberOrElement_0 = null;
+
+        EObject this_DatamartAddition_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2067:28: ( (this_DatamartNumberOrElement_0= ruleDatamartNumberOrElement | (otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')' ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2068:1: (this_DatamartNumberOrElement_0= ruleDatamartNumberOrElement | (otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')' ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2068:1: (this_DatamartNumberOrElement_0= ruleDatamartNumberOrElement | (otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')' ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==RULE_INT||(LA41_0>=RULE_HEX && LA41_0<=RULE_DECIMAL)||LA41_0==39||(LA41_0>=61 && LA41_0<=63)||(LA41_0>=162 && LA41_0<=167)||(LA41_0>=178 && LA41_0<=180)) ) {
+                alt41=1;
+            }
+            else if ( (LA41_0==46) ) {
+                alt41=2;
+            }
+            else {
+                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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2069:5: this_DatamartNumberOrElement_0= ruleDatamartNumberOrElement
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartPrimaryAccess().getDatamartNumberOrElementParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartNumberOrElement_in_ruleDatamartPrimary4733);
+                    this_DatamartNumberOrElement_0=ruleDatamartNumberOrElement();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartNumberOrElement_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2078:6: (otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2078:6: (otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2078:8: otherlv_1= '(' this_DatamartAddition_2= ruleDatamartAddition otherlv_3= ')'
+                    {
+                    otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleDatamartPrimary4751); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getDatamartPrimaryAccess().getLeftParenthesisKeyword_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartPrimaryAccess().getDatamartAdditionParserRuleCall_1_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartAddition_in_ruleDatamartPrimary4773);
+                    this_DatamartAddition_2=ruleDatamartAddition();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartAddition_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleDatamartPrimary4784); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getDatamartPrimaryAccess().getRightParenthesisKeyword_1_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartPrimary"
+
+
+    // $ANTLR start "entryRuleDatamartNumberOrElement"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2103:1: entryRuleDatamartNumberOrElement returns [EObject current=null] : iv_ruleDatamartNumberOrElement= ruleDatamartNumberOrElement EOF ;
+    public final EObject entryRuleDatamartNumberOrElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartNumberOrElement = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2104:2: (iv_ruleDatamartNumberOrElement= ruleDatamartNumberOrElement EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2105:2: iv_ruleDatamartNumberOrElement= ruleDatamartNumberOrElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartNumberOrElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartNumberOrElement_in_entryRuleDatamartNumberOrElement4821);
+            iv_ruleDatamartNumberOrElement=ruleDatamartNumberOrElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartNumberOrElement; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartNumberOrElement4831); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartNumberOrElement"
+
+
+    // $ANTLR start "ruleDatamartNumberOrElement"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2112:1: ruleDatamartNumberOrElement returns [EObject current=null] : ( ( (lv_value_0_0= ruleNumber ) ) | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartMemberTuple_3= ruleDatamartMemberTuple | this_DatamartAggregation_4= ruleDatamartAggregation ) ;
+    public final EObject ruleDatamartNumberOrElement() throws RecognitionException {
+        EObject current = null;
+
+        AntlrDatatypeRuleToken lv_value_0_0 = null;
+
+        EObject this_DatamartMeasure_1 = null;
+
+        EObject this_DatamartDerivedMeasure_2 = null;
+
+        EObject this_DatamartMemberTuple_3 = null;
+
+        EObject this_DatamartAggregation_4 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2115:28: ( ( ( (lv_value_0_0= ruleNumber ) ) | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartMemberTuple_3= ruleDatamartMemberTuple | this_DatamartAggregation_4= ruleDatamartAggregation ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2116:1: ( ( (lv_value_0_0= ruleNumber ) ) | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartMemberTuple_3= ruleDatamartMemberTuple | this_DatamartAggregation_4= ruleDatamartAggregation )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2116:1: ( ( (lv_value_0_0= ruleNumber ) ) | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartMemberTuple_3= ruleDatamartMemberTuple | this_DatamartAggregation_4= ruleDatamartAggregation )
+            int alt42=5;
+            switch ( input.LA(1) ) {
+            case RULE_INT:
+            case RULE_HEX:
+            case RULE_DECIMAL:
+                {
+                alt42=1;
+                }
+                break;
+            case 62:
+                {
+                alt42=2;
+                }
+                break;
+            case 61:
+                {
+                alt42=3;
+                }
+                break;
+            case 63:
+            case 162:
+            case 163:
+            case 164:
+            case 165:
+            case 166:
+            case 167:
+                {
+                alt42=4;
+                }
+                break;
+            case 39:
+            case 178:
+            case 179:
+            case 180:
+                {
+                alt42=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 42, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt42) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2116:2: ( (lv_value_0_0= ruleNumber ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2116:2: ( (lv_value_0_0= ruleNumber ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2117:1: (lv_value_0_0= ruleNumber )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2117:1: (lv_value_0_0= ruleNumber )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2118:3: lv_value_0_0= ruleNumber
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getValueNumberParserRuleCall_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleNumber_in_ruleDatamartNumberOrElement4877);
+                    lv_value_0_0=ruleNumber();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartNumberOrElementRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"value",
+                              		lv_value_0_0, 
+                              		"Number");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2136:5: this_DatamartMeasure_1= ruleDatamartMeasure
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMeasureParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartMeasure_in_ruleDatamartNumberOrElement4905);
+                    this_DatamartMeasure_1=ruleDatamartMeasure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartMeasure_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2146:5: this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartDerivedMeasure_in_ruleDatamartNumberOrElement4932);
+                    this_DatamartDerivedMeasure_2=ruleDatamartDerivedMeasure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartDerivedMeasure_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2156:5: this_DatamartMemberTuple_3= ruleDatamartMemberTuple
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartMemberTupleParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartMemberTuple_in_ruleDatamartNumberOrElement4959);
+                    this_DatamartMemberTuple_3=ruleDatamartMemberTuple();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartMemberTuple_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2166:5: this_DatamartAggregation_4= ruleDatamartAggregation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartNumberOrElementAccess().getDatamartAggregationParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartAggregation_in_ruleDatamartNumberOrElement4986);
+                    this_DatamartAggregation_4=ruleDatamartAggregation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartAggregation_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartNumberOrElement"
+
+
+    // $ANTLR start "entryRuleDatamartMemberTuple"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2182:1: entryRuleDatamartMemberTuple returns [EObject current=null] : iv_ruleDatamartMemberTuple= ruleDatamartMemberTuple EOF ;
+    public final EObject entryRuleDatamartMemberTuple() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartMemberTuple = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2183:2: (iv_ruleDatamartMemberTuple= ruleDatamartMemberTuple EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2184:2: iv_ruleDatamartMemberTuple= ruleDatamartMemberTuple EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartMemberTupleRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartMemberTuple_in_entryRuleDatamartMemberTuple5021);
+            iv_ruleDatamartMemberTuple=ruleDatamartMemberTuple();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartMemberTuple; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartMemberTuple5031); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartMemberTuple"
+
+
+    // $ANTLR start "ruleDatamartMemberTuple"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2191:1: ruleDatamartMemberTuple returns [EObject current=null] : ( ( ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of' )? ( (lv_hierarchy_3_0= ruleDatamartHierarchy ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) ) ;
+    public final EObject ruleDatamartMemberTuple() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        EObject lv_function_0_0 = null;
+
+        EObject lv_function_1_0 = null;
+
+        EObject lv_hierarchy_3_0 = null;
+
+        EObject lv_right_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2194:28: ( ( ( ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of' )? ( (lv_hierarchy_3_0= ruleDatamartHierarchy ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:1: ( ( ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of' )? ( (lv_hierarchy_3_0= ruleDatamartHierarchy ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:1: ( ( ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of' )? ( (lv_hierarchy_3_0= ruleDatamartHierarchy ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:2: ( ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of' )? ( (lv_hierarchy_3_0= ruleDatamartHierarchy ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:2: ( ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of' )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( ((LA44_0>=162 && LA44_0<=167)) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:3: ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) ) otherlv_2= 'of'
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:3: ( ( (lv_function_0_0= ruleDatamartFunction ) ) | ( (lv_function_1_0= ruleDatamartParameterFunction ) ) )
+                    int alt43=2;
+                    int LA43_0 = input.LA(1);
+
+                    if ( ((LA43_0>=162 && LA43_0<=165)) ) {
+                        alt43=1;
+                    }
+                    else if ( ((LA43_0>=166 && LA43_0<=167)) ) {
+                        alt43=2;
+                    }
+                    else {
+                        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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:4: ( (lv_function_0_0= ruleDatamartFunction ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2195:4: ( (lv_function_0_0= ruleDatamartFunction ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2196:1: (lv_function_0_0= ruleDatamartFunction )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2196:1: (lv_function_0_0= ruleDatamartFunction )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2197:3: lv_function_0_0= ruleDatamartFunction
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getFunctionDatamartFunctionParserRuleCall_0_0_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleDatamartFunction_in_ruleDatamartMemberTuple5079);
+                            lv_function_0_0=ruleDatamartFunction();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"function",
+                                      		lv_function_0_0, 
+                                      		"DatamartFunction");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2214:6: ( (lv_function_1_0= ruleDatamartParameterFunction ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2214:6: ( (lv_function_1_0= ruleDatamartParameterFunction ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2215:1: (lv_function_1_0= ruleDatamartParameterFunction )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2215:1: (lv_function_1_0= ruleDatamartParameterFunction )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2216:3: lv_function_1_0= ruleDatamartParameterFunction
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getFunctionDatamartParameterFunctionParserRuleCall_0_0_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleDatamartParameterFunction_in_ruleDatamartMemberTuple5106);
+                            lv_function_1_0=ruleDatamartParameterFunction();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"function",
+                                      		lv_function_1_0, 
+                                      		"DatamartParameterFunction");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_2=(Token)match(input,57,FOLLOW_57_in_ruleDatamartMemberTuple5119); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getDatamartMemberTupleAccess().getOfKeyword_0_1());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2236:3: ( (lv_hierarchy_3_0= ruleDatamartHierarchy ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2237:1: (lv_hierarchy_3_0= ruleDatamartHierarchy )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2237:1: (lv_hierarchy_3_0= ruleDatamartHierarchy )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2238:3: lv_hierarchy_3_0= ruleDatamartHierarchy
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getHierarchyDatamartHierarchyParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartHierarchy_in_ruleDatamartMemberTuple5142);
+            lv_hierarchy_3_0=ruleDatamartHierarchy();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"hierarchy",
+                      		lv_hierarchy_3_0, 
+                      		"DatamartHierarchy");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2254:2: ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2254:3: () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2254:3: ()
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2255:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getDatamartMemberTupleAccess().getDatamartMemberTupleLeftAction_2_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_5=(Token)match(input,58,FOLLOW_58_in_ruleDatamartMemberTuple5164); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getDatamartMemberTupleAccess().getOverKeyword_2_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2264:1: ( (lv_right_6_0= ruleDatamartMeasure ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2265:1: (lv_right_6_0= ruleDatamartMeasure )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2265:1: (lv_right_6_0= ruleDatamartMeasure )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2266:3: lv_right_6_0= ruleDatamartMeasure
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartMemberTupleAccess().getRightDatamartMeasureParserRuleCall_2_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartMeasure_in_ruleDatamartMemberTuple5185);
+            lv_right_6_0=ruleDatamartMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartMemberTupleRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"right",
+                      		lv_right_6_0, 
+                      		"DatamartMeasure");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartMemberTuple"
+
+
+    // $ANTLR start "entryRuleDatamartFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2290:1: entryRuleDatamartFunction returns [EObject current=null] : iv_ruleDatamartFunction= ruleDatamartFunction EOF ;
+    public final EObject entryRuleDatamartFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2291:2: (iv_ruleDatamartFunction= ruleDatamartFunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2292:2: iv_ruleDatamartFunction= ruleDatamartFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartFunction_in_entryRuleDatamartFunction5222);
+            iv_ruleDatamartFunction=ruleDatamartFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartFunction5232); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartFunction"
+
+
+    // $ANTLR start "ruleDatamartFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2299:1: ruleDatamartFunction returns [EObject current=null] : ( (lv_function_0_0= ruleFunctionEnum ) ) ;
+    public final EObject ruleDatamartFunction() throws RecognitionException {
+        EObject current = null;
+
+        Enumerator lv_function_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2302:28: ( ( (lv_function_0_0= ruleFunctionEnum ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2303:1: ( (lv_function_0_0= ruleFunctionEnum ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2303:1: ( (lv_function_0_0= ruleFunctionEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2304:1: (lv_function_0_0= ruleFunctionEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2304:1: (lv_function_0_0= ruleFunctionEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2305:3: lv_function_0_0= ruleFunctionEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartFunctionAccess().getFunctionFunctionEnumEnumRuleCall_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleFunctionEnum_in_ruleDatamartFunction5277);
+            lv_function_0_0=ruleFunctionEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"function",
+                      		lv_function_0_0, 
+                      		"FunctionEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartFunction"
+
+
+    // $ANTLR start "entryRuleDatamartParameterFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2329:1: entryRuleDatamartParameterFunction returns [EObject current=null] : iv_ruleDatamartParameterFunction= ruleDatamartParameterFunction EOF ;
+    public final EObject entryRuleDatamartParameterFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartParameterFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2330:2: (iv_ruleDatamartParameterFunction= ruleDatamartParameterFunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2331:2: iv_ruleDatamartParameterFunction= ruleDatamartParameterFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartParameterFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartParameterFunction_in_entryRuleDatamartParameterFunction5312);
+            iv_ruleDatamartParameterFunction=ruleDatamartParameterFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartParameterFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartParameterFunction5322); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartParameterFunction"
+
+
+    // $ANTLR start "ruleDatamartParameterFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2338:1: ruleDatamartParameterFunction returns [EObject current=null] : ( ( (lv_function_0_0= ruleParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' ) ;
+    public final EObject ruleDatamartParameterFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Enumerator lv_function_0_0 = null;
+
+        EObject lv_parameter_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2341:28: ( ( ( (lv_function_0_0= ruleParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2342:1: ( ( (lv_function_0_0= ruleParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2342:1: ( ( (lv_function_0_0= ruleParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2342:2: ( (lv_function_0_0= ruleParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')'
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2342:2: ( (lv_function_0_0= ruleParameterFunctionEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2343:1: (lv_function_0_0= ruleParameterFunctionEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2343:1: (lv_function_0_0= ruleParameterFunctionEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2344:3: lv_function_0_0= ruleParameterFunctionEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartParameterFunctionAccess().getFunctionParameterFunctionEnumEnumRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleParameterFunctionEnum_in_ruleDatamartParameterFunction5368);
+            lv_function_0_0=ruleParameterFunctionEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartParameterFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"function",
+                      		lv_function_0_0, 
+                      		"ParameterFunctionEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleDatamartParameterFunction5380); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDatamartParameterFunctionAccess().getLeftParenthesisKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2364:1: ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2365:1: (lv_parameter_2_0= ruleDatamartFunctionIntParameter )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2365:1: (lv_parameter_2_0= ruleDatamartFunctionIntParameter )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2366:3: lv_parameter_2_0= ruleDatamartFunctionIntParameter
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartParameterFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartFunctionIntParameter_in_ruleDatamartParameterFunction5401);
+            lv_parameter_2_0=ruleDatamartFunctionIntParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartParameterFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"parameter",
+                      		lv_parameter_2_0, 
+                      		"DatamartFunctionIntParameter");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleDatamartParameterFunction5413); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getDatamartParameterFunctionAccess().getRightParenthesisKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartParameterFunction"
+
+
+    // $ANTLR start "entryRuleDatamartFunctionIntParameter"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2394:1: entryRuleDatamartFunctionIntParameter returns [EObject current=null] : iv_ruleDatamartFunctionIntParameter= ruleDatamartFunctionIntParameter EOF ;
+    public final EObject entryRuleDatamartFunctionIntParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartFunctionIntParameter = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2395:2: (iv_ruleDatamartFunctionIntParameter= ruleDatamartFunctionIntParameter EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2396:2: iv_ruleDatamartFunctionIntParameter= ruleDatamartFunctionIntParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartFunctionIntParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartFunctionIntParameter_in_entryRuleDatamartFunctionIntParameter5449);
+            iv_ruleDatamartFunctionIntParameter=ruleDatamartFunctionIntParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartFunctionIntParameter; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartFunctionIntParameter5459); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartFunctionIntParameter"
+
+
+    // $ANTLR start "ruleDatamartFunctionIntParameter"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2403:1: ruleDatamartFunctionIntParameter returns [EObject current=null] : ( (lv_value_0_0= RULE_INT ) ) ;
+    public final EObject ruleDatamartFunctionIntParameter() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_value_0_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2406:28: ( ( (lv_value_0_0= RULE_INT ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2407:1: ( (lv_value_0_0= RULE_INT ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2407:1: ( (lv_value_0_0= RULE_INT ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2408:1: (lv_value_0_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2408:1: (lv_value_0_0= RULE_INT )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2409:3: lv_value_0_0= RULE_INT
+            {
+            lv_value_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDatamartFunctionIntParameter5500); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_value_0_0, grammarAccess.getDatamartFunctionIntParameterAccess().getValueINTTerminalRuleCall_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartFunctionIntParameterRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"value",
+                      		lv_value_0_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartFunctionIntParameter"
+
+
+    // $ANTLR start "entryRuleDatamartSetFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2433:1: entryRuleDatamartSetFunction returns [EObject current=null] : iv_ruleDatamartSetFunction= ruleDatamartSetFunction EOF ;
+    public final EObject entryRuleDatamartSetFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSetFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2434:2: (iv_ruleDatamartSetFunction= ruleDatamartSetFunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2435:2: iv_ruleDatamartSetFunction= ruleDatamartSetFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSetFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSetFunction_in_entryRuleDatamartSetFunction5540);
+            iv_ruleDatamartSetFunction=ruleDatamartSetFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSetFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSetFunction5550); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSetFunction"
+
+
+    // $ANTLR start "ruleDatamartSetFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2442:1: ruleDatamartSetFunction returns [EObject current=null] : ( (lv_setFunction_0_0= ruleSetFunctionEnum ) ) ;
+    public final EObject ruleDatamartSetFunction() throws RecognitionException {
+        EObject current = null;
+
+        Enumerator lv_setFunction_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2445:28: ( ( (lv_setFunction_0_0= ruleSetFunctionEnum ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2446:1: ( (lv_setFunction_0_0= ruleSetFunctionEnum ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2446:1: ( (lv_setFunction_0_0= ruleSetFunctionEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2447:1: (lv_setFunction_0_0= ruleSetFunctionEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2447:1: (lv_setFunction_0_0= ruleSetFunctionEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2448:3: lv_setFunction_0_0= ruleSetFunctionEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetFunctionAccess().getSetFunctionSetFunctionEnumEnumRuleCall_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleSetFunctionEnum_in_ruleDatamartSetFunction5595);
+            lv_setFunction_0_0=ruleSetFunctionEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"setFunction",
+                      		lv_setFunction_0_0, 
+                      		"SetFunctionEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSetFunction"
+
+
+    // $ANTLR start "entryRuleDatamartSetParameterFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2472:1: entryRuleDatamartSetParameterFunction returns [EObject current=null] : iv_ruleDatamartSetParameterFunction= ruleDatamartSetParameterFunction EOF ;
+    public final EObject entryRuleDatamartSetParameterFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSetParameterFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2473:2: (iv_ruleDatamartSetParameterFunction= ruleDatamartSetParameterFunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2474:2: iv_ruleDatamartSetParameterFunction= ruleDatamartSetParameterFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSetParameterFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSetParameterFunction_in_entryRuleDatamartSetParameterFunction5630);
+            iv_ruleDatamartSetParameterFunction=ruleDatamartSetParameterFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSetParameterFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSetParameterFunction5640); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSetParameterFunction"
+
+
+    // $ANTLR start "ruleDatamartSetParameterFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2481:1: ruleDatamartSetParameterFunction returns [EObject current=null] : ( ( (lv_setFunction_0_0= ruleSetParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' ) ;
+    public final EObject ruleDatamartSetParameterFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Enumerator lv_setFunction_0_0 = null;
+
+        EObject lv_parameter_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2484:28: ( ( ( (lv_setFunction_0_0= ruleSetParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2485:1: ( ( (lv_setFunction_0_0= ruleSetParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2485:1: ( ( (lv_setFunction_0_0= ruleSetParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2485:2: ( (lv_setFunction_0_0= ruleSetParameterFunctionEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')'
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2485:2: ( (lv_setFunction_0_0= ruleSetParameterFunctionEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2486:1: (lv_setFunction_0_0= ruleSetParameterFunctionEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2486:1: (lv_setFunction_0_0= ruleSetParameterFunctionEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2487:3: lv_setFunction_0_0= ruleSetParameterFunctionEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetParameterFunctionAccess().getSetFunctionSetParameterFunctionEnumEnumRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleSetParameterFunctionEnum_in_ruleDatamartSetParameterFunction5686);
+            lv_setFunction_0_0=ruleSetParameterFunctionEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetParameterFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"setFunction",
+                      		lv_setFunction_0_0, 
+                      		"SetParameterFunctionEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleDatamartSetParameterFunction5698); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDatamartSetParameterFunctionAccess().getLeftParenthesisKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2507:1: ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2508:1: (lv_parameter_2_0= ruleDatamartFunctionIntParameter )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2508:1: (lv_parameter_2_0= ruleDatamartFunctionIntParameter )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2509:3: lv_parameter_2_0= ruleDatamartFunctionIntParameter
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetParameterFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartFunctionIntParameter_in_ruleDatamartSetParameterFunction5719);
+            lv_parameter_2_0=ruleDatamartFunctionIntParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetParameterFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"parameter",
+                      		lv_parameter_2_0, 
+                      		"DatamartFunctionIntParameter");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleDatamartSetParameterFunction5731); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getDatamartSetParameterFunctionAccess().getRightParenthesisKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSetParameterFunction"
+
+
+    // $ANTLR start "entryRuleDatamartSetAggregationFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2537:1: entryRuleDatamartSetAggregationFunction returns [EObject current=null] : iv_ruleDatamartSetAggregationFunction= ruleDatamartSetAggregationFunction EOF ;
+    public final EObject entryRuleDatamartSetAggregationFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSetAggregationFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2538:2: (iv_ruleDatamartSetAggregationFunction= ruleDatamartSetAggregationFunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2539:2: iv_ruleDatamartSetAggregationFunction= ruleDatamartSetAggregationFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSetAggregationFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSetAggregationFunction_in_entryRuleDatamartSetAggregationFunction5767);
+            iv_ruleDatamartSetAggregationFunction=ruleDatamartSetAggregationFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSetAggregationFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSetAggregationFunction5777); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSetAggregationFunction"
+
+
+    // $ANTLR start "ruleDatamartSetAggregationFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2546:1: ruleDatamartSetAggregationFunction returns [EObject current=null] : ( ( (lv_aggregation_0_0= ruleSetAggregationEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' ) ;
+    public final EObject ruleDatamartSetAggregationFunction() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Enumerator lv_aggregation_0_0 = null;
+
+        EObject lv_parameter_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2549:28: ( ( ( (lv_aggregation_0_0= ruleSetAggregationEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2550:1: ( ( (lv_aggregation_0_0= ruleSetAggregationEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2550:1: ( ( (lv_aggregation_0_0= ruleSetAggregationEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2550:2: ( (lv_aggregation_0_0= ruleSetAggregationEnum ) ) otherlv_1= '(' ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) ) otherlv_3= ')'
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2550:2: ( (lv_aggregation_0_0= ruleSetAggregationEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2551:1: (lv_aggregation_0_0= ruleSetAggregationEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2551:1: (lv_aggregation_0_0= ruleSetAggregationEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2552:3: lv_aggregation_0_0= ruleSetAggregationEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetAggregationFunctionAccess().getAggregationSetAggregationEnumEnumRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleSetAggregationEnum_in_ruleDatamartSetAggregationFunction5823);
+            lv_aggregation_0_0=ruleSetAggregationEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetAggregationFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"aggregation",
+                      		lv_aggregation_0_0, 
+                      		"SetAggregationEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleDatamartSetAggregationFunction5835); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDatamartSetAggregationFunctionAccess().getLeftParenthesisKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2572:1: ( (lv_parameter_2_0= ruleDatamartFunctionIntParameter ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2573:1: (lv_parameter_2_0= ruleDatamartFunctionIntParameter )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2573:1: (lv_parameter_2_0= ruleDatamartFunctionIntParameter )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2574:3: lv_parameter_2_0= ruleDatamartFunctionIntParameter
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetAggregationFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartFunctionIntParameter_in_ruleDatamartSetAggregationFunction5856);
+            lv_parameter_2_0=ruleDatamartFunctionIntParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetAggregationFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"parameter",
+                      		lv_parameter_2_0, 
+                      		"DatamartFunctionIntParameter");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,47,FOLLOW_47_in_ruleDatamartSetAggregationFunction5868); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getDatamartSetAggregationFunctionAccess().getRightParenthesisKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSetAggregationFunction"
+
+
+    // $ANTLR start "entryRuleDatamartSetTuple"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2602:1: entryRuleDatamartSetTuple returns [EObject current=null] : iv_ruleDatamartSetTuple= ruleDatamartSetTuple EOF ;
+    public final EObject entryRuleDatamartSetTuple() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSetTuple = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2603:2: (iv_ruleDatamartSetTuple= ruleDatamartSetTuple EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2604:2: iv_ruleDatamartSetTuple= ruleDatamartSetTuple EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSetTupleRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSetTuple_in_entryRuleDatamartSetTuple5904);
+            iv_ruleDatamartSetTuple=ruleDatamartSetTuple();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSetTuple; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSetTuple5914); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSetTuple"
+
+
+    // $ANTLR start "ruleDatamartSetTuple"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2611:1: ruleDatamartSetTuple returns [EObject current=null] : ( ( ( (lv_setFunction_0_0= ruleDatamartSetFunction ) ) | ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) ) ) ( () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) ) ) ) ;
+    public final EObject ruleDatamartSetTuple() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_3=null;
+        EObject lv_setFunction_0_0 = null;
+
+        EObject lv_setFunction_1_0 = null;
+
+        EObject lv_right_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2614:28: ( ( ( ( (lv_setFunction_0_0= ruleDatamartSetFunction ) ) | ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) ) ) ( () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2615:1: ( ( ( (lv_setFunction_0_0= ruleDatamartSetFunction ) ) | ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) ) ) ( () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2615:1: ( ( ( (lv_setFunction_0_0= ruleDatamartSetFunction ) ) | ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) ) ) ( () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2615:2: ( ( (lv_setFunction_0_0= ruleDatamartSetFunction ) ) | ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) ) ) ( () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2615:2: ( ( (lv_setFunction_0_0= ruleDatamartSetFunction ) ) | ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( ((LA45_0>=168 && LA45_0<=169)) ) {
+                alt45=1;
+            }
+            else if ( ((LA45_0>=170 && LA45_0<=171)) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2615:3: ( (lv_setFunction_0_0= ruleDatamartSetFunction ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2615:3: ( (lv_setFunction_0_0= ruleDatamartSetFunction ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2616:1: (lv_setFunction_0_0= ruleDatamartSetFunction )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2616:1: (lv_setFunction_0_0= ruleDatamartSetFunction )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2617:3: lv_setFunction_0_0= ruleDatamartSetFunction
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartSetTupleAccess().getSetFunctionDatamartSetFunctionParserRuleCall_0_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleDatamartSetFunction_in_ruleDatamartSetTuple5961);
+                    lv_setFunction_0_0=ruleDatamartSetFunction();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartSetTupleRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"setFunction",
+                              		lv_setFunction_0_0, 
+                              		"DatamartSetFunction");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2634:6: ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2634:6: ( (lv_setFunction_1_0= ruleDatamartSetParameterFunction ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2635:1: (lv_setFunction_1_0= ruleDatamartSetParameterFunction )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2635:1: (lv_setFunction_1_0= ruleDatamartSetParameterFunction )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2636:3: lv_setFunction_1_0= ruleDatamartSetParameterFunction
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartSetTupleAccess().getSetFunctionDatamartSetParameterFunctionParserRuleCall_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleDatamartSetParameterFunction_in_ruleDatamartSetTuple5988);
+                    lv_setFunction_1_0=ruleDatamartSetParameterFunction();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartSetTupleRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"setFunction",
+                              		lv_setFunction_1_0, 
+                              		"DatamartSetParameterFunction");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2652:3: ( () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2652:4: () otherlv_3= 'of' ( (lv_right_4_0= ruleDatamartHierarchy ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2652:4: ()
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2653:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getDatamartSetTupleAccess().getDatamartSetTupleLeftAction_1_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_3=(Token)match(input,57,FOLLOW_57_in_ruleDatamartSetTuple6011); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getDatamartSetTupleAccess().getOfKeyword_1_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2662:1: ( (lv_right_4_0= ruleDatamartHierarchy ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2663:1: (lv_right_4_0= ruleDatamartHierarchy )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2663:1: (lv_right_4_0= ruleDatamartHierarchy )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2664:3: lv_right_4_0= ruleDatamartHierarchy
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetTupleAccess().getRightDatamartHierarchyParserRuleCall_1_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartHierarchy_in_ruleDatamartSetTuple6032);
+            lv_right_4_0=ruleDatamartHierarchy();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetTupleRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"right",
+                      		lv_right_4_0, 
+                      		"DatamartHierarchy");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSetTuple"
+
+
+    // $ANTLR start "entryRuleDatamartAggregationFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2688:1: entryRuleDatamartAggregationFunction returns [EObject current=null] : iv_ruleDatamartAggregationFunction= ruleDatamartAggregationFunction EOF ;
+    public final EObject entryRuleDatamartAggregationFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartAggregationFunction = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2689:2: (iv_ruleDatamartAggregationFunction= ruleDatamartAggregationFunction EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2690:2: iv_ruleDatamartAggregationFunction= ruleDatamartAggregationFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartAggregationFunctionRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartAggregationFunction_in_entryRuleDatamartAggregationFunction6069);
+            iv_ruleDatamartAggregationFunction=ruleDatamartAggregationFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartAggregationFunction; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartAggregationFunction6079); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartAggregationFunction"
+
+
+    // $ANTLR start "ruleDatamartAggregationFunction"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2697:1: ruleDatamartAggregationFunction returns [EObject current=null] : ( (lv_aggregation_0_0= ruleAggregationEnum ) ) ;
+    public final EObject ruleDatamartAggregationFunction() throws RecognitionException {
+        EObject current = null;
+
+        Enumerator lv_aggregation_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2700:28: ( ( (lv_aggregation_0_0= ruleAggregationEnum ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2701:1: ( (lv_aggregation_0_0= ruleAggregationEnum ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2701:1: ( (lv_aggregation_0_0= ruleAggregationEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2702:1: (lv_aggregation_0_0= ruleAggregationEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2702:1: (lv_aggregation_0_0= ruleAggregationEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2703:3: lv_aggregation_0_0= ruleAggregationEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartAggregationFunctionAccess().getAggregationAggregationEnumEnumRuleCall_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleAggregationEnum_in_ruleDatamartAggregationFunction6124);
+            lv_aggregation_0_0=ruleAggregationEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartAggregationFunctionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"aggregation",
+                      		lv_aggregation_0_0, 
+                      		"AggregationEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartAggregationFunction"
+
+
+    // $ANTLR start "entryRuleDatamartAggregation"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2727:1: entryRuleDatamartAggregation returns [EObject current=null] : iv_ruleDatamartAggregation= ruleDatamartAggregation EOF ;
+    public final EObject entryRuleDatamartAggregation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartAggregation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2728:2: (iv_ruleDatamartAggregation= ruleDatamartAggregation EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2729:2: iv_ruleDatamartAggregation= ruleDatamartAggregation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartAggregationRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartAggregation_in_entryRuleDatamartAggregation6159);
+            iv_ruleDatamartAggregation=ruleDatamartAggregation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartAggregation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartAggregation6169); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartAggregation"
+
+
+    // $ANTLR start "ruleDatamartAggregation"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2736:1: ruleDatamartAggregation returns [EObject current=null] : ( ( (lv_aggregation_0_0= ruleDatamartAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) ) ;
+    public final EObject ruleDatamartAggregation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_5=null;
+        EObject lv_aggregation_0_0 = null;
+
+        EObject lv_set_2_0 = null;
+
+        EObject lv_set_3_0 = null;
+
+        EObject lv_right_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2739:28: ( ( ( (lv_aggregation_0_0= ruleDatamartAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2740:1: ( ( (lv_aggregation_0_0= ruleDatamartAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2740:1: ( ( (lv_aggregation_0_0= ruleDatamartAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2740:2: ( (lv_aggregation_0_0= ruleDatamartAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2740:2: ( (lv_aggregation_0_0= ruleDatamartAggregationFunction ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2741:1: (lv_aggregation_0_0= ruleDatamartAggregationFunction )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2741:1: (lv_aggregation_0_0= ruleDatamartAggregationFunction )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2742:3: lv_aggregation_0_0= ruleDatamartAggregationFunction
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getAggregationDatamartAggregationFunctionParserRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartAggregationFunction_in_ruleDatamartAggregation6215);
+            lv_aggregation_0_0=ruleDatamartAggregationFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"aggregation",
+                      		lv_aggregation_0_0, 
+                      		"DatamartAggregationFunction");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,57,FOLLOW_57_in_ruleDatamartAggregation6227); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDatamartAggregationAccess().getOfKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2762:1: ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( ((LA46_0>=168 && LA46_0<=171)) ) {
+                alt46=1;
+            }
+            else if ( (LA46_0==63) ) {
+                alt46=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 46, 0, input);
+
+                throw nvae;
+            }
+            switch (alt46) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2762:2: ( (lv_set_2_0= ruleDatamartSetTuple ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2762:2: ( (lv_set_2_0= ruleDatamartSetTuple ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2763:1: (lv_set_2_0= ruleDatamartSetTuple )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2763:1: (lv_set_2_0= ruleDatamartSetTuple )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2764:3: lv_set_2_0= ruleDatamartSetTuple
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getSetDatamartSetTupleParserRuleCall_2_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleDatamartSetTuple_in_ruleDatamartAggregation6249);
+                    lv_set_2_0=ruleDatamartSetTuple();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"set",
+                              		lv_set_2_0, 
+                              		"DatamartSetTuple");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2781:6: ( (lv_set_3_0= ruleDatamartHierarchy ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2781:6: ( (lv_set_3_0= ruleDatamartHierarchy ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2782:1: (lv_set_3_0= ruleDatamartHierarchy )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2782:1: (lv_set_3_0= ruleDatamartHierarchy )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2783:3: lv_set_3_0= ruleDatamartHierarchy
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getSetDatamartHierarchyParserRuleCall_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleDatamartHierarchy_in_ruleDatamartAggregation6276);
+                    lv_set_3_0=ruleDatamartHierarchy();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"set",
+                              		lv_set_3_0, 
+                              		"DatamartHierarchy");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2799:3: ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2799:4: () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2799:4: ()
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2800:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getDatamartAggregationAccess().getDatamartAggregationLeftAction_3_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_5=(Token)match(input,58,FOLLOW_58_in_ruleDatamartAggregation6299); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getDatamartAggregationAccess().getOverKeyword_3_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2809:1: ( (lv_right_6_0= ruleDatamartMeasure ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2810:1: (lv_right_6_0= ruleDatamartMeasure )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2810:1: (lv_right_6_0= ruleDatamartMeasure )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2811:3: lv_right_6_0= ruleDatamartMeasure
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartAggregationAccess().getRightDatamartMeasureParserRuleCall_3_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartMeasure_in_ruleDatamartAggregation6320);
+            lv_right_6_0=ruleDatamartMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartAggregationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"right",
+                      		lv_right_6_0, 
+                      		"DatamartMeasure");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartAggregation"
+
+
+    // $ANTLR start "entryRuleDatamartSetAggregation"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2835:1: entryRuleDatamartSetAggregation returns [EObject current=null] : iv_ruleDatamartSetAggregation= ruleDatamartSetAggregation EOF ;
+    public final EObject entryRuleDatamartSetAggregation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSetAggregation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2836:2: (iv_ruleDatamartSetAggregation= ruleDatamartSetAggregation EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2837:2: iv_ruleDatamartSetAggregation= ruleDatamartSetAggregation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSetAggregationRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSetAggregation_in_entryRuleDatamartSetAggregation6357);
+            iv_ruleDatamartSetAggregation=ruleDatamartSetAggregation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSetAggregation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSetAggregation6367); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSetAggregation"
+
+
+    // $ANTLR start "ruleDatamartSetAggregation"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2844:1: ruleDatamartSetAggregation returns [EObject current=null] : ( ( (lv_aggregation_0_0= ruleDatamartSetAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) ) ;
+    public final EObject ruleDatamartSetAggregation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_5=null;
+        EObject lv_aggregation_0_0 = null;
+
+        EObject lv_set_2_0 = null;
+
+        EObject lv_set_3_0 = null;
+
+        EObject lv_right_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2847:28: ( ( ( (lv_aggregation_0_0= ruleDatamartSetAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2848:1: ( ( (lv_aggregation_0_0= ruleDatamartSetAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2848:1: ( ( (lv_aggregation_0_0= ruleDatamartSetAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2848:2: ( (lv_aggregation_0_0= ruleDatamartSetAggregationFunction ) ) otherlv_1= 'of' ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) ) ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2848:2: ( (lv_aggregation_0_0= ruleDatamartSetAggregationFunction ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2849:1: (lv_aggregation_0_0= ruleDatamartSetAggregationFunction )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2849:1: (lv_aggregation_0_0= ruleDatamartSetAggregationFunction )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2850:3: lv_aggregation_0_0= ruleDatamartSetAggregationFunction
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getAggregationDatamartSetAggregationFunctionParserRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartSetAggregationFunction_in_ruleDatamartSetAggregation6413);
+            lv_aggregation_0_0=ruleDatamartSetAggregationFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"aggregation",
+                      		lv_aggregation_0_0, 
+                      		"DatamartSetAggregationFunction");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,57,FOLLOW_57_in_ruleDatamartSetAggregation6425); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDatamartSetAggregationAccess().getOfKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2870:1: ( ( (lv_set_2_0= ruleDatamartSetTuple ) ) | ( (lv_set_3_0= ruleDatamartHierarchy ) ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( ((LA47_0>=168 && LA47_0<=171)) ) {
+                alt47=1;
+            }
+            else if ( (LA47_0==63) ) {
+                alt47=2;
+            }
+            else {
+                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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2870:2: ( (lv_set_2_0= ruleDatamartSetTuple ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2870:2: ( (lv_set_2_0= ruleDatamartSetTuple ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2871:1: (lv_set_2_0= ruleDatamartSetTuple )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2871:1: (lv_set_2_0= ruleDatamartSetTuple )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2872:3: lv_set_2_0= ruleDatamartSetTuple
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getSetDatamartSetTupleParserRuleCall_2_0_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleDatamartSetTuple_in_ruleDatamartSetAggregation6447);
+                    lv_set_2_0=ruleDatamartSetTuple();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"set",
+                              		lv_set_2_0, 
+                              		"DatamartSetTuple");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2889:6: ( (lv_set_3_0= ruleDatamartHierarchy ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2889:6: ( (lv_set_3_0= ruleDatamartHierarchy ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2890:1: (lv_set_3_0= ruleDatamartHierarchy )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2890:1: (lv_set_3_0= ruleDatamartHierarchy )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2891:3: lv_set_3_0= ruleDatamartHierarchy
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getSetDatamartHierarchyParserRuleCall_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleDatamartHierarchy_in_ruleDatamartSetAggregation6474);
+                    lv_set_3_0=ruleDatamartHierarchy();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"set",
+                              		lv_set_3_0, 
+                              		"DatamartHierarchy");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2907:3: ( () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2907:4: () otherlv_5= 'over' ( (lv_right_6_0= ruleDatamartMeasure ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2907:4: ()
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2908:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getDatamartSetAggregationAccess().getDatamartSetAggregationLeftAction_3_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_5=(Token)match(input,58,FOLLOW_58_in_ruleDatamartSetAggregation6497); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getDatamartSetAggregationAccess().getOverKeyword_3_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2917:1: ( (lv_right_6_0= ruleDatamartMeasure ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2918:1: (lv_right_6_0= ruleDatamartMeasure )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2918:1: (lv_right_6_0= ruleDatamartMeasure )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2919:3: lv_right_6_0= ruleDatamartMeasure
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSetAggregationAccess().getRightDatamartMeasureParserRuleCall_3_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartMeasure_in_ruleDatamartSetAggregation6518);
+            lv_right_6_0=ruleDatamartMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSetAggregationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"right",
+                      		lv_right_6_0, 
+                      		"DatamartMeasure");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSetAggregation"
+
+
+    // $ANTLR start "entryRuleDatamartSlicer"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2943:1: entryRuleDatamartSlicer returns [EObject current=null] : iv_ruleDatamartSlicer= ruleDatamartSlicer EOF ;
+    public final EObject entryRuleDatamartSlicer() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartSlicer = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2944:2: (iv_ruleDatamartSlicer= ruleDatamartSlicer EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2945:2: iv_ruleDatamartSlicer= ruleDatamartSlicer EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartSlicerRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartSlicer_in_entryRuleDatamartSlicer6555);
+            iv_ruleDatamartSlicer=ruleDatamartSlicer();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartSlicer; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartSlicer6565); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartSlicer"
+
+
+    // $ANTLR start "ruleDatamartSlicer"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2952:1: ruleDatamartSlicer returns [EObject current=null] : (otherlv_0= 'slicer' ( (lv_element_1_0= ruleDatamartElement ) ) ) ;
+    public final EObject ruleDatamartSlicer() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_element_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2955:28: ( (otherlv_0= 'slicer' ( (lv_element_1_0= ruleDatamartElement ) ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2956:1: (otherlv_0= 'slicer' ( (lv_element_1_0= ruleDatamartElement ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2956:1: (otherlv_0= 'slicer' ( (lv_element_1_0= ruleDatamartElement ) ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2956:3: otherlv_0= 'slicer' ( (lv_element_1_0= ruleDatamartElement ) )
+            {
+            otherlv_0=(Token)match(input,59,FOLLOW_59_in_ruleDatamartSlicer6602); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartSlicerAccess().getSlicerKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2960:1: ( (lv_element_1_0= ruleDatamartElement ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2961:1: (lv_element_1_0= ruleDatamartElement )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2961:1: (lv_element_1_0= ruleDatamartElement )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2962:3: lv_element_1_0= ruleDatamartElement
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartSlicerAccess().getElementDatamartElementParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleDatamartElement_in_ruleDatamartSlicer6623);
+            lv_element_1_0=ruleDatamartElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartSlicerRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"element",
+                      		lv_element_1_0, 
+                      		"DatamartElement");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartSlicer"
+
+
+    // $ANTLR start "entryRuleDatamartAxis"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2986:1: entryRuleDatamartAxis returns [EObject current=null] : iv_ruleDatamartAxis= ruleDatamartAxis EOF ;
+    public final EObject entryRuleDatamartAxis() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartAxis = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2987:2: (iv_ruleDatamartAxis= ruleDatamartAxis EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2988:2: iv_ruleDatamartAxis= ruleDatamartAxis EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartAxisRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartAxis_in_entryRuleDatamartAxis6659);
+            iv_ruleDatamartAxis=ruleDatamartAxis();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartAxis; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartAxis6669); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartAxis"
+
+
+    // $ANTLR start "ruleDatamartAxis"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2995:1: ruleDatamartAxis returns [EObject current=null] : (otherlv_0= 'axis' ( (lv_name_1_0= ruleAxisEnum ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleDatamartElement ) )* otherlv_4= '}' ) ;
+    public final EObject ruleDatamartAxis() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Enumerator lv_name_1_0 = null;
+
+        EObject lv_elements_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2998:28: ( (otherlv_0= 'axis' ( (lv_name_1_0= ruleAxisEnum ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleDatamartElement ) )* otherlv_4= '}' ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2999:1: (otherlv_0= 'axis' ( (lv_name_1_0= ruleAxisEnum ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleDatamartElement ) )* otherlv_4= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2999:1: (otherlv_0= 'axis' ( (lv_name_1_0= ruleAxisEnum ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleDatamartElement ) )* otherlv_4= '}' )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:2999:3: otherlv_0= 'axis' ( (lv_name_1_0= ruleAxisEnum ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleDatamartElement ) )* otherlv_4= '}'
+            {
+            otherlv_0=(Token)match(input,60,FOLLOW_60_in_ruleDatamartAxis6706); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartAxisAccess().getAxisKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3003:1: ( (lv_name_1_0= ruleAxisEnum ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3004:1: (lv_name_1_0= ruleAxisEnum )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3004:1: (lv_name_1_0= ruleAxisEnum )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3005:3: lv_name_1_0= ruleAxisEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDatamartAxisAccess().getNameAxisEnumEnumRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleAxisEnum_in_ruleDatamartAxis6727);
+            lv_name_1_0=ruleAxisEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDatamartAxisRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"AxisEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleDatamartAxis6739); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDatamartAxisAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3025:1: ( (lv_elements_3_0= ruleDatamartElement ) )*
+            loop48:
+            do {
+                int alt48=2;
+                int LA48_0 = input.LA(1);
+
+                if ( ((LA48_0>=61 && LA48_0<=63)||(LA48_0>=172 && LA48_0<=177)) ) {
+                    alt48=1;
+                }
+
+
+                switch (alt48) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3026:1: (lv_elements_3_0= ruleDatamartElement )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3026:1: (lv_elements_3_0= ruleDatamartElement )
+            	    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3027:3: lv_elements_3_0= ruleDatamartElement
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDatamartAxisAccess().getElementsDatamartElementParserRuleCall_3_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleDatamartElement_in_ruleDatamartAxis6760);
+            	    lv_elements_3_0=ruleDatamartElement();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDatamartAxisRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"elements",
+            	              		lv_elements_3_0, 
+            	              		"DatamartElement");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop48;
+                }
+            } while (true);
+
+            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleDatamartAxis6773); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getDatamartAxisAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartAxis"
+
+
+    // $ANTLR start "entryRuleDatamartElement"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3055:1: entryRuleDatamartElement returns [EObject current=null] : iv_ruleDatamartElement= ruleDatamartElement EOF ;
+    public final EObject entryRuleDatamartElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartElement = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3056:2: (iv_ruleDatamartElement= ruleDatamartElement EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3057:2: iv_ruleDatamartElement= ruleDatamartElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartElementRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartElement_in_entryRuleDatamartElement6809);
+            iv_ruleDatamartElement=ruleDatamartElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartElement; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartElement6819); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartElement"
+
+
+    // $ANTLR start "ruleDatamartElement"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3064:1: ruleDatamartElement returns [EObject current=null] : (this_DatamartHierarchy_0= ruleDatamartHierarchy | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartSetAggregation_3= ruleDatamartSetAggregation ) ;
+    public final EObject ruleDatamartElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DatamartHierarchy_0 = null;
+
+        EObject this_DatamartMeasure_1 = null;
+
+        EObject this_DatamartDerivedMeasure_2 = null;
+
+        EObject this_DatamartSetAggregation_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3067:28: ( (this_DatamartHierarchy_0= ruleDatamartHierarchy | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartSetAggregation_3= ruleDatamartSetAggregation ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3068:1: (this_DatamartHierarchy_0= ruleDatamartHierarchy | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartSetAggregation_3= ruleDatamartSetAggregation )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3068:1: (this_DatamartHierarchy_0= ruleDatamartHierarchy | this_DatamartMeasure_1= ruleDatamartMeasure | this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure | this_DatamartSetAggregation_3= ruleDatamartSetAggregation )
+            int alt49=4;
+            switch ( input.LA(1) ) {
+            case 63:
+                {
+                alt49=1;
+                }
+                break;
+            case 62:
+                {
+                alt49=2;
+                }
+                break;
+            case 61:
+                {
+                alt49=3;
+                }
+                break;
+            case 172:
+            case 173:
+            case 174:
+            case 175:
+            case 176:
+            case 177:
+                {
+                alt49=4;
+                }
+                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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3069:5: this_DatamartHierarchy_0= ruleDatamartHierarchy
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartHierarchyParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartHierarchy_in_ruleDatamartElement6866);
+                    this_DatamartHierarchy_0=ruleDatamartHierarchy();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartHierarchy_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3079:5: this_DatamartMeasure_1= ruleDatamartMeasure
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartMeasureParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartMeasure_in_ruleDatamartElement6893);
+                    this_DatamartMeasure_1=ruleDatamartMeasure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartMeasure_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3089:5: this_DatamartDerivedMeasure_2= ruleDatamartDerivedMeasure
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartDerivedMeasureParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartDerivedMeasure_in_ruleDatamartElement6920);
+                    this_DatamartDerivedMeasure_2=ruleDatamartDerivedMeasure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartDerivedMeasure_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3099:5: this_DatamartSetAggregation_3= ruleDatamartSetAggregation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDatamartElementAccess().getDatamartSetAggregationParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleDatamartSetAggregation_in_ruleDatamartElement6947);
+                    this_DatamartSetAggregation_3=ruleDatamartSetAggregation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DatamartSetAggregation_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartElement"
+
+
+    // $ANTLR start "entryRuleDatamartDerivedMeasure"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3115:1: entryRuleDatamartDerivedMeasure returns [EObject current=null] : iv_ruleDatamartDerivedMeasure= ruleDatamartDerivedMeasure EOF ;
+    public final EObject entryRuleDatamartDerivedMeasure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartDerivedMeasure = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3116:2: (iv_ruleDatamartDerivedMeasure= ruleDatamartDerivedMeasure EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3117:2: iv_ruleDatamartDerivedMeasure= ruleDatamartDerivedMeasure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartDerivedMeasureRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartDerivedMeasure_in_entryRuleDatamartDerivedMeasure6982);
+            iv_ruleDatamartDerivedMeasure=ruleDatamartDerivedMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartDerivedMeasure; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartDerivedMeasure6992); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartDerivedMeasure"
+
+
+    // $ANTLR start "ruleDatamartDerivedMeasure"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3124:1: ruleDatamartDerivedMeasure returns [EObject current=null] : (otherlv_0= 'derived' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? ) ;
+    public final EObject ruleDatamartDerivedMeasure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_scaled_2_0=null;
+        Enumerator lv_scale_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3127:28: ( (otherlv_0= 'derived' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3128:1: (otherlv_0= 'derived' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3128:1: (otherlv_0= 'derived' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3128:3: otherlv_0= 'derived' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )?
+            {
+            otherlv_0=(Token)match(input,61,FOLLOW_61_in_ruleDatamartDerivedMeasure7029); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartDerivedMeasureAccess().getDerivedKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3132:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3133:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3133:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3134:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartDerivedMeasureRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartDerivedMeasure7049); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartDerivedMeasureAccess().getDerivedRefDatamartDefineDerivedMeasureCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3145:2: ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )?
+            int alt50=2;
+            int LA50_0 = input.LA(1);
+
+            if ( (LA50_0==41) ) {
+                alt50=1;
+            }
+            switch (alt50) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3145:3: ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3145:3: ( (lv_scaled_2_0= 'scale' ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3146:1: (lv_scaled_2_0= 'scale' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3146:1: (lv_scaled_2_0= 'scale' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3147:3: lv_scaled_2_0= 'scale'
+                    {
+                    lv_scaled_2_0=(Token)match(input,41,FOLLOW_41_in_ruleDatamartDerivedMeasure7068); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_scaled_2_0, grammarAccess.getDatamartDerivedMeasureAccess().getScaledScaleKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartDerivedMeasureRule());
+                      	        }
+                             		setWithLastConsumed(current, "scaled", true, "scale");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3160:2: ( (lv_scale_3_0= ruleValueScaleEnum ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3161:1: (lv_scale_3_0= ruleValueScaleEnum )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3161:1: (lv_scale_3_0= ruleValueScaleEnum )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3162:3: lv_scale_3_0= ruleValueScaleEnum
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartDerivedMeasureAccess().getScaleValueScaleEnumEnumRuleCall_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleValueScaleEnum_in_ruleDatamartDerivedMeasure7102);
+                    lv_scale_3_0=ruleValueScaleEnum();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartDerivedMeasureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"scale",
+                              		lv_scale_3_0, 
+                              		"ValueScaleEnum");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartDerivedMeasure"
+
+
+    // $ANTLR start "entryRuleDatamartMeasure"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3186:1: entryRuleDatamartMeasure returns [EObject current=null] : iv_ruleDatamartMeasure= ruleDatamartMeasure EOF ;
+    public final EObject entryRuleDatamartMeasure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartMeasure = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3187:2: (iv_ruleDatamartMeasure= ruleDatamartMeasure EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3188:2: iv_ruleDatamartMeasure= ruleDatamartMeasure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartMeasureRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartMeasure_in_entryRuleDatamartMeasure7140);
+            iv_ruleDatamartMeasure=ruleDatamartMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartMeasure; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartMeasure7150); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartMeasure"
+
+
+    // $ANTLR start "ruleDatamartMeasure"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3195:1: ruleDatamartMeasure returns [EObject current=null] : (otherlv_0= 'measure' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? ) ;
+    public final EObject ruleDatamartMeasure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_scaled_2_0=null;
+        Enumerator lv_scale_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3198:28: ( (otherlv_0= 'measure' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3199:1: (otherlv_0= 'measure' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3199:1: (otherlv_0= 'measure' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3199:3: otherlv_0= 'measure' ( (otherlv_1= RULE_ID ) ) ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )?
+            {
+            otherlv_0=(Token)match(input,62,FOLLOW_62_in_ruleDatamartMeasure7187); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartMeasureAccess().getMeasureKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3203:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3204:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3204:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3205:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartMeasureRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartMeasure7207); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartMeasureAccess().getMeasureRefCubeMeasureCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3216:2: ( ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) ) )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==41) ) {
+                alt51=1;
+            }
+            switch (alt51) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3216:3: ( (lv_scaled_2_0= 'scale' ) ) ( (lv_scale_3_0= ruleValueScaleEnum ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3216:3: ( (lv_scaled_2_0= 'scale' ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3217:1: (lv_scaled_2_0= 'scale' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3217:1: (lv_scaled_2_0= 'scale' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3218:3: lv_scaled_2_0= 'scale'
+                    {
+                    lv_scaled_2_0=(Token)match(input,41,FOLLOW_41_in_ruleDatamartMeasure7226); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_scaled_2_0, grammarAccess.getDatamartMeasureAccess().getScaledScaleKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartMeasureRule());
+                      	        }
+                             		setWithLastConsumed(current, "scaled", true, "scale");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3231:2: ( (lv_scale_3_0= ruleValueScaleEnum ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3232:1: (lv_scale_3_0= ruleValueScaleEnum )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3232:1: (lv_scale_3_0= ruleValueScaleEnum )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3233:3: lv_scale_3_0= ruleValueScaleEnum
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDatamartMeasureAccess().getScaleValueScaleEnumEnumRuleCall_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleValueScaleEnum_in_ruleDatamartMeasure7260);
+                    lv_scale_3_0=ruleValueScaleEnum();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDatamartMeasureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"scale",
+                              		lv_scale_3_0, 
+                              		"ValueScaleEnum");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatamartMeasure"
+
+
+    // $ANTLR start "entryRuleDatamartHierarchy"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3257:1: entryRuleDatamartHierarchy returns [EObject current=null] : iv_ruleDatamartHierarchy= ruleDatamartHierarchy EOF ;
+    public final EObject entryRuleDatamartHierarchy() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDatamartHierarchy = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3258:2: (iv_ruleDatamartHierarchy= ruleDatamartHierarchy EOF )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3259:2: iv_ruleDatamartHierarchy= ruleDatamartHierarchy EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDatamartHierarchyRule()); 
+            }
+            pushFollow(FOLLOW_ruleDatamartHierarchy_in_entryRuleDatamartHierarchy7298);
+            iv_ruleDatamartHierarchy=ruleDatamartHierarchy();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDatamartHierarchy; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleDatamartHierarchy7308); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDatamartHierarchy"
+
+
+    // $ANTLR start "ruleDatamartHierarchy"
+    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3266:1: ruleDatamartHierarchy returns [EObject current=null] : (otherlv_0= 'hierarchy' ( (otherlv_1= RULE_ID ) ) ( (lv_defaultMember_2_0= 'default' ) )? ( (lv_allMember_3_0= 'condensed' ) )? ( (lv_allLevels_4_0= 'exploded' ) )? (otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )? )? ( ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )? )? ) ;
+    public final EObject ruleDatamartHierarchy() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_defaultMember_2_0=null;
+        Token lv_allMember_3_0=null;
+        Token lv_allLevels_4_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token lv_filtered_7_0=null;
+        Token lv_selected_8_0=null;
+        Token lv_all_9_0=null;
+        Token lv_except_10_0=null;
+        Token otherlv_11=null;
+        Token lv_ordered_12_0=null;
+        Token lv_descending_14_0=null;
+        EObject lv_orderRef_13_1 = null;
+
+        EObject lv_orderRef_13_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3269:28: ( (otherlv_0= 'hierarchy' ( (otherlv_1= RULE_ID ) ) ( (lv_defaultMember_2_0= 'default' ) )? ( (lv_allMember_3_0= 'condensed' ) )? ( (lv_allLevels_4_0= 'exploded' ) )? (otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )? )? ( ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )? )? ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3270:1: (otherlv_0= 'hierarchy' ( (otherlv_1= RULE_ID ) ) ( (lv_defaultMember_2_0= 'default' ) )? ( (lv_allMember_3_0= 'condensed' ) )? ( (lv_allLevels_4_0= 'exploded' ) )? (otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )? )? ( ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )? )? )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3270:1: (otherlv_0= 'hierarchy' ( (otherlv_1= RULE_ID ) ) ( (lv_defaultMember_2_0= 'default' ) )? ( (lv_allMember_3_0= 'condensed' ) )? ( (lv_allLevels_4_0= 'exploded' ) )? (otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )? )? ( ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )? )? )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3270:3: otherlv_0= 'hierarchy' ( (otherlv_1= RULE_ID ) ) ( (lv_defaultMember_2_0= 'default' ) )? ( (lv_allMember_3_0= 'condensed' ) )? ( (lv_allLevels_4_0= 'exploded' ) )? (otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )? )? ( ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )? )?
+            {
+            otherlv_0=(Token)match(input,63,FOLLOW_63_in_ruleDatamartHierarchy7345); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDatamartHierarchyAccess().getHierarchyKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3274:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3275:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3275:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3276:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartHierarchy7365); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getDatamartHierarchyAccess().getHierarchyRefCubeHierarchyCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3287:2: ( (lv_defaultMember_2_0= 'default' ) )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( (LA52_0==64) ) {
+                alt52=1;
+            }
+            switch (alt52) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3288:1: (lv_defaultMember_2_0= 'default' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3288:1: (lv_defaultMember_2_0= 'default' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3289:3: lv_defaultMember_2_0= 'default'
+                    {
+                    lv_defaultMember_2_0=(Token)match(input,64,FOLLOW_64_in_ruleDatamartHierarchy7383); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_defaultMember_2_0, grammarAccess.getDatamartHierarchyAccess().getDefaultMemberDefaultKeyword_2_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "defaultMember", true, "default");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3302:3: ( (lv_allMember_3_0= 'condensed' ) )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==65) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3303:1: (lv_allMember_3_0= 'condensed' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3303:1: (lv_allMember_3_0= 'condensed' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3304:3: lv_allMember_3_0= 'condensed'
+                    {
+                    lv_allMember_3_0=(Token)match(input,65,FOLLOW_65_in_ruleDatamartHierarchy7415); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_allMember_3_0, grammarAccess.getDatamartHierarchyAccess().getAllMemberCondensedKeyword_3_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "allMember", true, "condensed");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3317:3: ( (lv_allLevels_4_0= 'exploded' ) )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==66) ) {
+                alt54=1;
+            }
+            switch (alt54) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3318:1: (lv_allLevels_4_0= 'exploded' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3318:1: (lv_allLevels_4_0= 'exploded' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3319:3: lv_allLevels_4_0= 'exploded'
+                    {
+                    lv_allLevels_4_0=(Token)match(input,66,FOLLOW_66_in_ruleDatamartHierarchy7447); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_allLevels_4_0, grammarAccess.getDatamartHierarchyAccess().getAllLevelsExplodedKeyword_4_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "allLevels", true, "exploded");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3332:3: (otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )? )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==67) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3332:5: otherlv_5= 'level' ( (otherlv_6= RULE_ID ) ) ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )?
+                    {
+                    otherlv_5=(Token)match(input,67,FOLLOW_67_in_ruleDatamartHierarchy7474); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getDatamartHierarchyAccess().getLevelKeyword_5_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3336:1: ( (otherlv_6= RULE_ID ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3337:1: (otherlv_6= RULE_ID )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3337:1: (otherlv_6= RULE_ID )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3338:3: otherlv_6= RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                      	        }
+                              
+                    }
+                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartHierarchy7494); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		newLeafNode(otherlv_6, grammarAccess.getDatamartHierarchyAccess().getLevelRefCubeLevelCrossReference_5_1_0()); 
+                      	
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3349:2: ( ( (lv_filtered_7_0= 'filtered' ) ) | ( (lv_selected_8_0= 'selected' ) ) )?
+                    int alt55=3;
+                    int LA55_0 = input.LA(1);
+
+                    if ( (LA55_0==48) ) {
+                        alt55=1;
+                    }
+                    else if ( (LA55_0==50) ) {
+                        alt55=2;
+                    }
+                    switch (alt55) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3349:3: ( (lv_filtered_7_0= 'filtered' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3349:3: ( (lv_filtered_7_0= 'filtered' ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3350:1: (lv_filtered_7_0= 'filtered' )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3350:1: (lv_filtered_7_0= 'filtered' )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3351:3: lv_filtered_7_0= 'filtered'
+                            {
+                            lv_filtered_7_0=(Token)match(input,48,FOLLOW_48_in_ruleDatamartHierarchy7513); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_filtered_7_0, grammarAccess.getDatamartHierarchyAccess().getFilteredFilteredKeyword_5_2_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                              	        }
+                                     		setWithLastConsumed(current, "filtered", true, "filtered");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3365:6: ( (lv_selected_8_0= 'selected' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3365:6: ( (lv_selected_8_0= 'selected' ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3366:1: (lv_selected_8_0= 'selected' )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3366:1: (lv_selected_8_0= 'selected' )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3367:3: lv_selected_8_0= 'selected'
+                            {
+                            lv_selected_8_0=(Token)match(input,50,FOLLOW_50_in_ruleDatamartHierarchy7550); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_selected_8_0, grammarAccess.getDatamartHierarchyAccess().getSelectedSelectedKeyword_5_2_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                              	        }
+                                     		setWithLastConsumed(current, "selected", true, "selected");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3380:6: ( ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )? )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==68) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3380:7: ( (lv_all_9_0= 'detailed' ) ) ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )? ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )?
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3380:7: ( (lv_all_9_0= 'detailed' ) )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3381:1: (lv_all_9_0= 'detailed' )
+                    {
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3381:1: (lv_all_9_0= 'detailed' )
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3382:3: lv_all_9_0= 'detailed'
+                    {
+                    lv_all_9_0=(Token)match(input,68,FOLLOW_68_in_ruleDatamartHierarchy7586); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_all_9_0, grammarAccess.getDatamartHierarchyAccess().getAllDetailedKeyword_6_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "all", true, "detailed");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3395:2: ( ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) ) )?
+                    int alt57=2;
+                    int LA57_0 = input.LA(1);
+
+                    if ( (LA57_0==69) ) {
+                        alt57=1;
+                    }
+                    switch (alt57) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3395:3: ( (lv_except_10_0= 'except' ) ) ( (otherlv_11= RULE_ID ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3395:3: ( (lv_except_10_0= 'except' ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3396:1: (lv_except_10_0= 'except' )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3396:1: (lv_except_10_0= 'except' )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3397:3: lv_except_10_0= 'except'
+                            {
+                            lv_except_10_0=(Token)match(input,69,FOLLOW_69_in_ruleDatamartHierarchy7618); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_except_10_0, grammarAccess.getDatamartHierarchyAccess().getExceptExceptKeyword_6_1_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                              	        }
+                                     		setWithLastConsumed(current, "except", true, "except");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3410:2: ( (otherlv_11= RULE_ID ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3411:1: (otherlv_11= RULE_ID )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3411:1: (otherlv_11= RULE_ID )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3412:3: otherlv_11= RULE_ID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                              	        }
+                                      
+                            }
+                            otherlv_11=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDatamartHierarchy7651); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              		newLeafNode(otherlv_11, grammarAccess.getDatamartHierarchyAccess().getExceptRefCubeLevelCrossReference_6_1_1_0()); 
+                              	
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3423:4: ( ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )? )?
+                    int alt60=2;
+                    int LA60_0 = input.LA(1);
+
+                    if ( (LA60_0==70) ) {
+                        alt60=1;
+                    }
+                    switch (alt60) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3423:5: ( (lv_ordered_12_0= 'ordered by' ) ) ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) ) ( (lv_descending_14_0= 'descending' ) )?
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3423:5: ( (lv_ordered_12_0= 'ordered by' ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3424:1: (lv_ordered_12_0= 'ordered by' )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3424:1: (lv_ordered_12_0= 'ordered by' )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3425:3: lv_ordered_12_0= 'ordered by'
+                            {
+                            lv_ordered_12_0=(Token)match(input,70,FOLLOW_70_in_ruleDatamartHierarchy7672); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_ordered_12_0, grammarAccess.getDatamartHierarchyAccess().getOrderedOrderedByKeyword_6_2_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDatamartHierarchyRule());
+                              	        }
+                                     		setWithLastConsumed(current, "ordered", true, "ordered by");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3438:2: ( ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3439:1: ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3439:1: ( (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure ) )
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3440:1: (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure )
+                            {
+                            // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3440:1: (lv_orderRef_13_1= ruleDatamartMeasure | lv_orderRef_13_2= ruleDatamartDerivedMeasure )
+                            int alt58=2;
+                            int LA58_0 = input.LA(1);
+
+                            if ( (LA58_0==62) ) {
+                                alt58=1;
+                            }
+                            else if ( (LA58_0==61) ) {
+                                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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3441:3: lv_orderRef_13_1= ruleDatamartMeasure
+                                    {
+                                    if ( state.backtracking==0 ) {
+                                       
+                                      	        newCompositeNode(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0()); 
+                                      	    
+                                    }
+                                    pushFollow(FOLLOW_ruleDatamartMeasure_in_ruleDatamartHierarchy7708);
+                                    lv_orderRef_13_1=ruleDatamartMeasure();
+
+                                    state._fsp--;
+                                    if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      	        if (current==null) {
+                                      	            current = createModelElementForParent(grammarAccess.getDatamartHierarchyRule());
+                                      	        }
+                                             		set(
+                                             			current, 
+                                             			"orderRef",
+                                              		lv_orderRef_13_1, 
+                                              		"DatamartMeasure");
+                                      	        afterParserOrEnumRuleCall();
+                                      	    
+                                    }
+
+                                    }
+                                    break;
+                                case 2 :
+                                    // ../org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/parser/antlr/internal/InternalDatamartDSL.g:3456:8: lv_orderRef_13_2= ruleDatamartDerivedMeasure
+                                    {
+                                    if ( state.backtracking==0 ) {
+                                       
+                                      	        newCompositeNode(grammarAccess.getDatamartHierarchyAccess().getOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1()); 
+                                      	    
+                                    }
+                                    pushFollow(FOLLOW_ruleDatamartDerivedMeasure_in_ruleDatamartHierarchy7727);
+                                    lv_orderRef_13_2=ruleDatamartDerivedMeasure();
+
+                                    state._fsp--;
+                                    if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      	        if (current==null) {
+                                      	            current = createModelElementForParent(grammarAccess.getDatamartHierarchyRule());
+                                      	        }
+                                             		set(
+                                             			current, 
+                                             			"orderRef",
+                                              		lv_orderRef_13_2, 
+                                              		"DatamartDerivedMeasure");
+                                      	        afterParserOrEnumRuleCall();
+                                      	    
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/serializer/DatamartDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/serializer/DatamartDSLSemanticSequencer.java
new file mode 100644
index 0000000..61c69f6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/serializer/DatamartDSLSemanticSequencer.java
@@ -0,0 +1,2634 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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.datamartdsl.Addition;
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression;
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartModel;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter;
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction;
+import org.eclipse.osbp.xtext.datamartdsl.Division;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange;
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction;
+import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess;
+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 DatamartDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+
+	@Inject
+	private DatamartDSLGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == DatamartDSLPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case DatamartDSLPackage.ADDITION:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartAddition(context, (Addition) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.CONDITIONAL_EXPRESSION:
+				if(context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule()) {
+					sequence_DatamartConditionalExpression(context, (ConditionalExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.CONJUNCTION:
+				if(context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule()) {
+					sequence_DatamartConjunction(context, (Conjunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_AGGREGATION:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartAggregationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartNumberOrElementRule() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartAggregation(context, (DatamartAggregation) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_AGGREGATION_FUNCTION:
+				if(context == grammarAccess.getDatamartAggregationFunctionRule()) {
+					sequence_DatamartAggregationFunction(context, (DatamartAggregationFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_AXIS:
+				if(context == grammarAccess.getDatamartAxisRule() ||
+				   context == grammarAccess.getDatamartCubeElementRule()) {
+					sequence_DatamartAxis(context, (DatamartAxis) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_COLUMN:
+				if(context == grammarAccess.getDatamartColumnRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule() ||
+				   context == grammarAccess.getDatamartValueRule()) {
+					sequence_DatamartColumn(context, (DatamartColumn) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_CONDITION:
+				if(context == grammarAccess.getDatamartConditionRule()) {
+					sequence_DatamartCondition(context, (DatamartCondition) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_CUBE:
+				if(context == grammarAccess.getDatamartCubeRule() ||
+				   context == grammarAccess.getDatamartSourceRule()) {
+					sequence_DatamartCube(context, (DatamartCube) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_DEFINE_DERIVED_MEASURE:
+				if(context == grammarAccess.getDatamartCubeElementRule() ||
+				   context == grammarAccess.getDatamartDefineDerivedMeasureRule()) {
+					sequence_DatamartDefineDerivedMeasure(context, (DatamartDefineDerivedMeasure) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_DEFINITION:
+				if(context == grammarAccess.getDatamartDefinitionRule()) {
+					sequence_DatamartDefinition(context, (DatamartDefinition) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_DERIVED_MEASURE:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartDerivedMeasureRule() ||
+				   context == grammarAccess.getDatamartElementRule() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartNumberOrElementRule() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartDerivedMeasure(context, (DatamartDerivedMeasure) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_ENTITY:
+				if(context == grammarAccess.getDatamartEntityRule() ||
+				   context == grammarAccess.getDatamartSourceRule()) {
+					sequence_DatamartEntity(context, (DatamartEntity) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_FUNCTION:
+				if(context == grammarAccess.getDatamartFunctionRule()) {
+					sequence_DatamartFunction(context, (DatamartFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_FUNCTION_INT_PARAMETER:
+				if(context == grammarAccess.getDatamartFunctionIntParameterRule()) {
+					sequence_DatamartFunctionIntParameter(context, (DatamartFunctionIntParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_HIERARCHY:
+				if(context == grammarAccess.getDatamartElementRule() ||
+				   context == grammarAccess.getDatamartHierarchyRule()) {
+					sequence_DatamartHierarchy(context, (DatamartHierarchy) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_MEASURE:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartElementRule() ||
+				   context == grammarAccess.getDatamartMeasureRule() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartNumberOrElementRule() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartMeasure(context, (DatamartMeasure) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_MEMBER:
+				if(context == grammarAccess.getDatamartMemberRule() ||
+				   context == grammarAccess.getDatamartNavigationRule()) {
+					sequence_DatamartMember(context, (DatamartMember) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_MEMBER_TUPLE:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMemberTupleRule() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartNumberOrElementRule() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartMemberTuple(context, (DatamartMemberTuple) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_MODEL:
+				if(context == grammarAccess.getDatamartModelRule()) {
+					sequence_DatamartModel(context, (DatamartModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_ORDER:
+				if(context == grammarAccess.getDatamartOrderRule()) {
+					sequence_DatamartOrder(context, (DatamartOrder) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_OWNER:
+				if(context == grammarAccess.getDatamartNavigationRule() ||
+				   context == grammarAccess.getDatamartOwnerRule()) {
+					sequence_DatamartOwner(context, (DatamartOwner) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_PACKAGE:
+				if(context == grammarAccess.getDatamartPackageRule()) {
+					sequence_DatamartPackage(context, (DatamartPackage) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_PARAMETER_FUNCTION:
+				if(context == grammarAccess.getDatamartParameterFunctionRule()) {
+					sequence_DatamartParameterFunction(context, (DatamartParameterFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_PROPERTY:
+				if(context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule() ||
+				   context == grammarAccess.getDatamartPropertyRule() ||
+				   context == grammarAccess.getDatamartValueRule()) {
+					sequence_DatamartProperty(context, (DatamartProperty) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_REFERENCE:
+				if(context == grammarAccess.getDatamartReferenceRule()) {
+					sequence_DatamartReference(context, (DatamartReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_ROLE:
+				if(context == grammarAccess.getDatamartRoleRule()) {
+					sequence_DatamartRole(context, (DatamartRole) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION:
+				if(context == grammarAccess.getDatamartElementRule() ||
+				   context == grammarAccess.getDatamartSetAggregationRule()) {
+					sequence_DatamartSetAggregation(context, (DatamartSetAggregation) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_SET_AGGREGATION_FUNCTION:
+				if(context == grammarAccess.getDatamartSetAggregationFunctionRule()) {
+					sequence_DatamartSetAggregationFunction(context, (DatamartSetAggregationFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_SET_FUNCTION:
+				if(context == grammarAccess.getDatamartSetFunctionRule()) {
+					sequence_DatamartSetFunction(context, (DatamartSetFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_SET_PARAMETER_FUNCTION:
+				if(context == grammarAccess.getDatamartSetParameterFunctionRule()) {
+					sequence_DatamartSetParameterFunction(context, (DatamartSetParameterFunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_SET_TUPLE:
+				if(context == grammarAccess.getDatamartSetTupleRule()) {
+					sequence_DatamartSetTuple(context, (DatamartSetTuple) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_SLICER:
+				if(context == grammarAccess.getDatamartCubeElementRule() ||
+				   context == grammarAccess.getDatamartSlicerRule()) {
+					sequence_DatamartSlicer(context, (DatamartSlicer) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_TASK:
+				if(context == grammarAccess.getDatamartSourceRule() ||
+				   context == grammarAccess.getDatamartTaskRule()) {
+					sequence_DatamartTask(context, (DatamartTask) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DATAMART_TASK_FILTER:
+				if(context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule() ||
+				   context == grammarAccess.getDatamartTaskFilterRule() ||
+				   context == grammarAccess.getDatamartValueRule()) {
+					sequence_DatamartTaskFilter(context, (DatamartTaskFilter) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DISJUNCTION:
+				if(context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule()) {
+					sequence_DatamartDisjunction(context, (Disjunction) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.DIVISION:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartMultiplication(context, (Division) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.EXPRESSION:
+				if(context == grammarAccess.getDatamartAggregationAccess().getDatamartAggregationLeftAction_3_0()) {
+					sequence_DatamartAggregation_DatamartAggregation_3_0(context, (Expression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getDatamartMemberTupleAccess().getDatamartMemberTupleLeftAction_2_0()) {
+					sequence_DatamartMemberTuple_DatamartMemberTuple_2_0(context, (Expression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartNumberOrElementRule() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartNumberOrElement(context, (Expression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getDatamartSetAggregationAccess().getDatamartSetAggregationLeftAction_3_0()) {
+					sequence_DatamartSetAggregation_DatamartSetAggregation_3_0(context, (Expression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getDatamartSetTupleAccess().getDatamartSetTupleLeftAction_1_0()) {
+					sequence_DatamartSetTuple_DatamartSetTuple_1_0(context, (Expression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getDatamartConditionalExpressionRule() ||
+				   context == grammarAccess.getDatamartConditionalExpressionAccess().getConditionalExpressionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartConjunctionRule() ||
+				   context == grammarAccess.getDatamartConjunctionAccess().getConjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartDisjunctionRule() ||
+				   context == grammarAccess.getDatamartDisjunctionAccess().getDisjunctionLeftAction_1_0_0() ||
+				   context == grammarAccess.getDatamartOperandRule() ||
+				   context == grammarAccess.getDatamartValueRule()) {
+					sequence_DatamartValue(context, (Expression) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.MULTIPLICATION:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartMultiplication(context, (Multiplication) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATA:
+				if(context == grammarAccess.getPropertyFillerDataRule()) {
+					sequence_PropertyFillerData(context, (PropertyFillerData) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_FUTURE:
+				if(context == grammarAccess.getPropertyFillerDateFutureRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerDateFuture(context, (PropertyFillerDateFuture) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_PAST:
+				if(context == grammarAccess.getPropertyFillerDatePastRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerDatePast(context, (PropertyFillerDatePast) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_DATE_RANGE:
+				if(context == grammarAccess.getPropertyFillerDateRangeRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerDateRange(context, (PropertyFillerDateRange) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANDOM:
+				if(context == grammarAccess.getPropertyFillerSignedDoubleRandomRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerSignedDoubleRandom(context, (PropertyFillerSignedDoubleRandom) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_DOUBLE_RANGE:
+				if(context == grammarAccess.getPropertyFillerSignedDoubleRangeRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerSignedDoubleRange(context, (PropertyFillerSignedDoubleRange) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANDOM:
+				if(context == grammarAccess.getPropertyFillerSignedIntegerRandomRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerSignedIntegerRandom(context, (PropertyFillerSignedIntegerRandom) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_SIGNED_INTEGER_RANGE:
+				if(context == grammarAccess.getPropertyFillerSignedIntegerRangeRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerSignedIntegerRange(context, (PropertyFillerSignedIntegerRange) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_PARAGRAPHS:
+				if(context == grammarAccess.getPropertyFillerTextParagraphsRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerTextParagraphs(context, (PropertyFillerTextParagraphs) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_RANDOM:
+				if(context == grammarAccess.getPropertyFillerTextRandomRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerTextRandom(context, (PropertyFillerTextRandom) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_SENTENCES:
+				if(context == grammarAccess.getPropertyFillerTextSentencesRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerTextSentences(context, (PropertyFillerTextSentences) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_TEXT_WORDS:
+				if(context == grammarAccess.getPropertyFillerTextWordsRule() ||
+				   context == grammarAccess.getPropertyFillerTypeRule()) {
+					sequence_PropertyFillerTextWords(context, (PropertyFillerTextWords) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANDOM:
+				if(context == grammarAccess.getPropertyFillerTypeRule() ||
+				   context == grammarAccess.getPropertyFillerUnsignedDoubleRandomRule()) {
+					sequence_PropertyFillerUnsignedDoubleRandom(context, (PropertyFillerUnsignedDoubleRandom) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_DOUBLE_RANGE:
+				if(context == grammarAccess.getPropertyFillerTypeRule() ||
+				   context == grammarAccess.getPropertyFillerUnsignedDoubleRangeRule()) {
+					sequence_PropertyFillerUnsignedDoubleRange(context, (PropertyFillerUnsignedDoubleRange) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANDOM:
+				if(context == grammarAccess.getPropertyFillerTypeRule() ||
+				   context == grammarAccess.getPropertyFillerUnsignedIntegerRandomRule()) {
+					sequence_PropertyFillerUnsignedIntegerRandom(context, (PropertyFillerUnsignedIntegerRandom) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.PROPERTY_FILLER_UNSIGNED_INTEGER_RANGE:
+				if(context == grammarAccess.getPropertyFillerTypeRule() ||
+				   context == grammarAccess.getPropertyFillerUnsignedIntegerRangeRule()) {
+					sequence_PropertyFillerUnsignedIntegerRange(context, (PropertyFillerUnsignedIntegerRange) semanticObject); 
+					return; 
+				}
+				else break;
+			case DatamartDSLPackage.SUBTRACTION:
+				if(context == grammarAccess.getDatamartAdditionRule() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getAdditionLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartAdditionAccess().getSubtractionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationRule() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getDivisionLeftAction_1_0_1_0() ||
+				   context == grammarAccess.getDatamartMultiplicationAccess().getMultiplicationLeftAction_1_0_0_0() ||
+				   context == grammarAccess.getDatamartPrimaryRule()) {
+					sequence_DatamartAddition(context, (Subtraction) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getDatamartImportRule()) {
+					sequence_DatamartImport(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:
+	 *     (left=DatamartAddition_Addition_1_0_0_0 right=DatamartMultiplication)
+	 */
+	protected void sequence_DatamartAddition(EObject context, Addition semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartAddition_Subtraction_1_0_1_0 right=DatamartMultiplication)
+	 */
+	protected void sequence_DatamartAddition(EObject context, Subtraction semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     aggregation=AggregationEnum
+	 */
+	protected void sequence_DatamartAggregationFunction(EObject context, DatamartAggregationFunction semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartAggregation_DatamartAggregation_3_0 right=DatamartMeasure)
+	 */
+	protected void sequence_DatamartAggregation(EObject context, DatamartAggregation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (aggregation=DatamartAggregationFunction (set=DatamartSetTuple | set=DatamartHierarchy))
+	 */
+	protected void sequence_DatamartAggregation_DatamartAggregation_3_0(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=AxisEnum elements+=DatamartElement*)
+	 */
+	protected void sequence_DatamartAxis(EObject context, DatamartAxis semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     columnRef=TaskQueryColumnEnum
+	 */
+	protected void sequence_DatamartColumn(EObject context, DatamartColumn semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     condition=DatamartDisjunction
+	 */
+	protected void sequence_DatamartCondition(EObject context, DatamartCondition semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_CONDITION__CONDITION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_CONDITION__CONDITION));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartConditionAccess().getConditionDatamartDisjunctionParserRuleCall_1_0(), semanticObject.getCondition());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartConditionalExpression_ConditionalExpression_1_0_0 operator=OperatorEnum right=DatamartOperand)
+	 */
+	protected void sequence_DatamartConditionalExpression(EObject context, ConditionalExpression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartConjunction_Conjunction_1_0_0 right=DatamartConditionalExpression)
+	 */
+	protected void sequence_DatamartConjunction(EObject context, Conjunction semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (cubeRef=[CubeType|ID] nonEmpty?='nonempty values'? axisslicer+=DatamartCubeElement*)
+	 */
+	protected void sequence_DatamartCube(EObject context, DatamartCube semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=TRANSLATABLEID derivedElement+=DatamartAddition*)
+	 */
+	protected void sequence_DatamartDefineDerivedMeasure(EObject context, DatamartDefineDerivedMeasure semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID (description?='described by' descriptionValue=TRANSLATABLESTRING)? roles+=DatamartRole* source=DatamartSource)
+	 */
+	protected void sequence_DatamartDefinition(EObject context, DatamartDefinition semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (derivedRef=[DatamartDefineDerivedMeasure|ID] (scaled?='scale' scale=ValueScaleEnum)?)
+	 */
+	protected void sequence_DatamartDerivedMeasure(EObject context, DatamartDerivedMeasure semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartDisjunction_Disjunction_1_0_0 right=DatamartConjunction)
+	 */
+	protected void sequence_DatamartDisjunction(EObject context, Disjunction semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         entityRef=[LEntity|ID] 
+	 *         tracking?='tracking'? 
+	 *         navigations+=DatamartNavigation* 
+	 *         properties+=DatamartProperty* 
+	 *         conditions+=DatamartCondition* 
+	 *         ordering+=DatamartOrder* 
+	 *         (fillerMinCountRows=INT fillerMaxCountRows=INT fillerDatas+=PropertyFillerData*)?
+	 *     )
+	 */
+	protected void sequence_DatamartEntity(EObject context, DatamartEntity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     value=INT
+	 */
+	protected void sequence_DatamartFunctionIntParameter(EObject context, DatamartFunctionIntParameter semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_FUNCTION_INT_PARAMETER__VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_FUNCTION_INT_PARAMETER__VALUE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartFunctionIntParameterAccess().getValueINTTerminalRuleCall_0(), semanticObject.getValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     function=FunctionEnum
+	 */
+	protected void sequence_DatamartFunction(EObject context, DatamartFunction semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_FUNCTION__FUNCTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_FUNCTION__FUNCTION));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartFunctionAccess().getFunctionFunctionEnumEnumRuleCall_0(), semanticObject.getFunction());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         hierarchyRef=[CubeHierarchy|ID] 
+	 *         defaultMember?='default'? 
+	 *         allMember?='condensed'? 
+	 *         allLevels?='exploded'? 
+	 *         (levelRef=[CubeLevel|ID] (filtered?='filtered' | selected?='selected')?)? 
+	 *         (
+	 *             all?='detailed' 
+	 *             (except?='except' exceptRef=[CubeLevel|ID])? 
+	 *             (ordered?='ordered by' (orderRef=DatamartMeasure | orderRef=DatamartDerivedMeasure) descending?='descending'?)?
+	 *         )?
+	 *     )
+	 */
+	protected void sequence_DatamartHierarchy(EObject context, DatamartHierarchy semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     importedNamespace=DatamartQualifiedNameWithWildCard
+	 */
+	protected void sequence_DatamartImport(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.getDatamartImportAccess().getImportedNamespaceDatamartQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (measureRef=[CubeMeasure|ID] (scaled?='scale' scale=ValueScaleEnum)?)
+	 */
+	protected void sequence_DatamartMeasure(EObject context, DatamartMeasure semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartMemberTuple_DatamartMemberTuple_2_0 right=DatamartMeasure)
+	 */
+	protected void sequence_DatamartMemberTuple(EObject context, DatamartMemberTuple semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((function=DatamartFunction | function=DatamartParameterFunction)? hierarchy=DatamartHierarchy)
+	 */
+	protected void sequence_DatamartMemberTuple_DatamartMemberTuple_2_0(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (joinRef=DatamartReference datamartEntity=DatamartEntity)
+	 */
+	protected void sequence_DatamartMember(EObject context, DatamartMember semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__JOIN_REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__JOIN_REF));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__DATAMART_ENTITY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__DATAMART_ENTITY));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartMemberAccess().getJoinRefDatamartReferenceParserRuleCall_1_0(), semanticObject.getJoinRef());
+		feeder.accept(grammarAccess.getDatamartMemberAccess().getDatamartEntityDatamartEntityParserRuleCall_3_0(), semanticObject.getDatamartEntity());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     packages+=DatamartPackage*
+	 */
+	protected void sequence_DatamartModel(EObject context, DatamartModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartMultiplication_Division_1_0_1_0 right=DatamartPrimary)
+	 */
+	protected void sequence_DatamartMultiplication(EObject context, Division semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartMultiplication_Multiplication_1_0_0_0 right=DatamartPrimary)
+	 */
+	protected void sequence_DatamartMultiplication(EObject context, Multiplication semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     value=Number
+	 */
+	protected void sequence_DatamartNumberOrElement(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (orderBy=[LEntityAttribute|ID] orderHow=OrderEnum)
+	 */
+	protected void sequence_DatamartOrder(EObject context, DatamartOrder semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_ORDER__ORDER_BY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_ORDER__ORDER_BY));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_ORDER__ORDER_HOW) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_ORDER__ORDER_HOW));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartOrderAccess().getOrderByLEntityAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getOrderBy());
+		feeder.accept(grammarAccess.getDatamartOrderAccess().getOrderHowOrderEnumEnumRuleCall_2_0(), semanticObject.getOrderHow());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (joinRef=DatamartReference datamartEntity=DatamartEntity)
+	 */
+	protected void sequence_DatamartOwner(EObject context, DatamartOwner semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__JOIN_REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__JOIN_REF));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__DATAMART_ENTITY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_NAVIGATION__DATAMART_ENTITY));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartOwnerAccess().getJoinRefDatamartReferenceParserRuleCall_1_0(), semanticObject.getJoinRef());
+		feeder.accept(grammarAccess.getDatamartOwnerAccess().getDatamartEntityDatamartEntityParserRuleCall_3_0(), semanticObject.getDatamartEntity());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=QualifiedName (imports+=DatamartImport* definitions+=DatamartDefinition*)?)
+	 */
+	protected void sequence_DatamartPackage(EObject context, DatamartPackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (function=ParameterFunctionEnum parameter=DatamartFunctionIntParameter)
+	 */
+	protected void sequence_DatamartParameterFunction(EObject context, DatamartParameterFunction semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_PARAMETER_FUNCTION__FUNCTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_PARAMETER_FUNCTION__FUNCTION));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_PARAMETER_FUNCTION__PARAMETER) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_PARAMETER_FUNCTION__PARAMETER));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartParameterFunctionAccess().getFunctionParameterFunctionEnumEnumRuleCall_0_0(), semanticObject.getFunction());
+		feeder.accept(grammarAccess.getDatamartParameterFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0(), semanticObject.getParameter());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         propertyRef=[LEntityAttribute|ID] 
+	 *         (aggregated?='aggregate' aggregate=SqlAggregationEnum)? 
+	 *         (placed?='on axis' axis=AxisEnum)? 
+	 *         (scaled?='scale' scale=ValueScaleEnum)?
+	 *     )
+	 */
+	protected void sequence_DatamartProperty(EObject context, DatamartProperty semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ref=[LEntityReference|ID]
+	 */
+	protected void sequence_DatamartReference(EObject context, DatamartReference semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_REFERENCE__REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_REFERENCE__REF));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartReferenceAccess().getRefLEntityReferenceIDTerminalRuleCall_1_0_1(), semanticObject.getRef());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     assignedRole=[Role|ID]
+	 */
+	protected void sequence_DatamartRole(EObject context, DatamartRole semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_ROLE__ASSIGNED_ROLE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_ROLE__ASSIGNED_ROLE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartRoleAccess().getAssignedRoleRoleIDTerminalRuleCall_1_0_1(), semanticObject.getAssignedRole());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (aggregation=SetAggregationEnum parameter=DatamartFunctionIntParameter)
+	 */
+	protected void sequence_DatamartSetAggregationFunction(EObject context, DatamartSetAggregationFunction semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_AGGREGATION_FUNCTION__AGGREGATION));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_AGGREGATION_FUNCTION__PARAMETER));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartSetAggregationFunctionAccess().getAggregationSetAggregationEnumEnumRuleCall_0_0(), semanticObject.getAggregation());
+		feeder.accept(grammarAccess.getDatamartSetAggregationFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0(), semanticObject.getParameter());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartSetAggregation_DatamartSetAggregation_3_0 right=DatamartMeasure)
+	 */
+	protected void sequence_DatamartSetAggregation(EObject context, DatamartSetAggregation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (aggregation=DatamartSetAggregationFunction (set=DatamartSetTuple | set=DatamartHierarchy))
+	 */
+	protected void sequence_DatamartSetAggregation_DatamartSetAggregation_3_0(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     setFunction=SetFunctionEnum
+	 */
+	protected void sequence_DatamartSetFunction(EObject context, DatamartSetFunction semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_FUNCTION__SET_FUNCTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_FUNCTION__SET_FUNCTION));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartSetFunctionAccess().getSetFunctionSetFunctionEnumEnumRuleCall_0(), semanticObject.getSetFunction());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (setFunction=SetParameterFunctionEnum parameter=DatamartFunctionIntParameter)
+	 */
+	protected void sequence_DatamartSetParameterFunction(EObject context, DatamartSetParameterFunction semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_PARAMETER_FUNCTION__SET_FUNCTION));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_SET_PARAMETER_FUNCTION__PARAMETER));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartSetParameterFunctionAccess().getSetFunctionSetParameterFunctionEnumEnumRuleCall_0_0(), semanticObject.getSetFunction());
+		feeder.accept(grammarAccess.getDatamartSetParameterFunctionAccess().getParameterDatamartFunctionIntParameterParserRuleCall_2_0(), semanticObject.getParameter());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (left=DatamartSetTuple_DatamartSetTuple_1_0 right=DatamartHierarchy)
+	 */
+	protected void sequence_DatamartSetTuple(EObject context, DatamartSetTuple semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (setFunction=DatamartSetFunction | setFunction=DatamartSetParameterFunction)
+	 */
+	protected void sequence_DatamartSetTuple_DatamartSetTuple_1_0(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     element=DatamartElement
+	 */
+	protected void sequence_DatamartSlicer(EObject context, DatamartSlicer semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.DATAMART_SLICER__ELEMENT) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.DATAMART_SLICER__ELEMENT));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getDatamartSlicerAccess().getElementDatamartElementParserRuleCall_1_0(), semanticObject.getElement());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     filterRef=TaskFilterEnum
+	 */
+	protected void sequence_DatamartTaskFilter(EObject context, DatamartTaskFilter semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (taskQuery=TaskQueryTopicEnum columns+=DatamartColumn* conditions+=DatamartCondition*)
+	 */
+	protected void sequence_DatamartTask(EObject context, DatamartTask semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (numberValue=Number | stringValue=STRING | (filtered?='filtered' optional?='optional'?) | selected?='selected')
+	 */
+	protected void sequence_DatamartValue(EObject context, Expression semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (propertyRef=[LEntityAttribute|ID] fillerType=PropertyFillerType)
+	 */
+	protected void sequence_PropertyFillerData(EObject context, PropertyFillerData semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA__PROPERTY_REF) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA__PROPERTY_REF));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA__FILLER_TYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA__FILLER_TYPE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getPropertyFillerDataAccess().getPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1(), semanticObject.getPropertyRef());
+		feeder.accept(grammarAccess.getPropertyFillerDataAccess().getFillerTypePropertyFillerTypeParserRuleCall_3_0(), semanticObject.getFillerType());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     dateFutureYears=INT
+	 */
+	protected void sequence_PropertyFillerDateFuture(EObject context, PropertyFillerDateFuture semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_FUTURE__DATE_FUTURE_YEARS));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getPropertyFillerDateFutureAccess().getDateFutureYearsINTTerminalRuleCall_1_0(), semanticObject.getDateFutureYears());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     datePastYears=INT
+	 */
+	protected void sequence_PropertyFillerDatePast(EObject context, PropertyFillerDatePast semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_PAST__DATE_PAST_YEARS));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getPropertyFillerDatePastAccess().getDatePastYearsINTTerminalRuleCall_1_0(), semanticObject.getDatePastYears());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (dateBeginYears=SINT dateEndYears=SINT)
+	 */
+	protected void sequence_PropertyFillerDateRange(EObject context, PropertyFillerDateRange semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_RANGE__DATE_BEGIN_YEARS));
+			if(transientValues.isValueTransient(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATE_RANGE__DATE_END_YEARS));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getPropertyFillerDateRangeAccess().getDateBeginYearsSINTParserRuleCall_1_0(), semanticObject.getDateBeginYears());
+		feeder.accept(grammarAccess.getPropertyFillerDateRangeAccess().getDateEndYearsSINTParserRuleCall_3_0(), semanticObject.getDateEndYears());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     items+=SignedNumber+
+	 */
+	protected void sequence_PropertyFillerSignedDoubleRandom(EObject context, PropertyFillerSignedDoubleRandom semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         ((beginRange=SignedNumber | beginRangeRef=[LEntityAttribute|ID])? (endRange=SignedNumber | endRangeRef=[LEntityAttribute|ID]))? 
+	 *         decimals=INT 
+	 *         rounded=UnsignedNumber?
+	 *     )
+	 */
+	protected void sequence_PropertyFillerSignedDoubleRange(EObject context, PropertyFillerSignedDoubleRange semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     items+=SINT+
+	 */
+	protected void sequence_PropertyFillerSignedIntegerRandom(EObject context, PropertyFillerSignedIntegerRandom semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (((beginRange=SINT | beginRangeRef=[LEntityAttribute|ID])? (endRange=SINT | endRangeRef=[LEntityAttribute|ID]))? rounded=INT?)
+	 */
+	protected void sequence_PropertyFillerSignedIntegerRange(EObject context, PropertyFillerSignedIntegerRange semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (count=INT?)
+	 */
+	protected void sequence_PropertyFillerTextParagraphs(EObject context, PropertyFillerTextParagraphs semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     items+=STRING+
+	 */
+	protected void sequence_PropertyFillerTextRandom(EObject context, PropertyFillerTextRandom semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (count=INT?)
+	 */
+	protected void sequence_PropertyFillerTextSentences(EObject context, PropertyFillerTextSentences semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (count=INT?)
+	 */
+	protected void sequence_PropertyFillerTextWords(EObject context, PropertyFillerTextWords semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     items+=UnsignedNumber+
+	 */
+	protected void sequence_PropertyFillerUnsignedDoubleRandom(EObject context, PropertyFillerUnsignedDoubleRandom semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         ((beginRange=UnsignedNumber | beginRangeRef=[LEntityAttribute|ID])? (endRange=UnsignedNumber | endRangeRef=[LEntityAttribute|ID]))? 
+	 *         decimals=INT 
+	 *         rounded=UnsignedNumber?
+	 *     )
+	 */
+	protected void sequence_PropertyFillerUnsignedDoubleRange(EObject context, PropertyFillerUnsignedDoubleRange semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     items+=INT+
+	 */
+	protected void sequence_PropertyFillerUnsignedIntegerRandom(EObject context, PropertyFillerUnsignedIntegerRandom semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (((beginRange=INT | beginRangeRef=[LEntityAttribute|ID])? (endRange=INT | endRangeRef=[LEntityAttribute|ID]))? rounded=INT?)
+	 */
+	protected void sequence_PropertyFillerUnsignedIntegerRange(EObject context, PropertyFillerUnsignedIntegerRange semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/serializer/DatamartDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/serializer/DatamartDSLSyntacticSequencer.java
new file mode 100644
index 0000000..ad34502
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/serializer/DatamartDSLSyntacticSequencer.java
@@ -0,0 +1,309 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess;
+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.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 DatamartDSLSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected DatamartDSLGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_DatamartDefinition___ForKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q;
+	protected AbstractElementAlias match_DatamartEntity___ConditionsKeyword_6_0_LeftCurlyBracketKeyword_6_1_RightCurlyBracketKeyword_6_3__q;
+	protected AbstractElementAlias match_DatamartEntity___NavigationKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q;
+	protected AbstractElementAlias match_DatamartEntity___OrderingKeyword_7_0_LeftCurlyBracketKeyword_7_1_RightCurlyBracketKeyword_7_3__q;
+	protected AbstractElementAlias match_DatamartEntity___PropertiesKeyword_5_0_LeftCurlyBracketKeyword_5_1_RightCurlyBracketKeyword_5_3__q;
+	protected AbstractElementAlias match_DatamartOperand_LeftParenthesisKeyword_1_0_a;
+	protected AbstractElementAlias match_DatamartOperand_LeftParenthesisKeyword_1_0_p;
+	protected AbstractElementAlias match_DatamartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q;
+	protected AbstractElementAlias match_DatamartPrimary_LeftParenthesisKeyword_1_0_a;
+	protected AbstractElementAlias match_DatamartPrimary_LeftParenthesisKeyword_1_0_p;
+	protected AbstractElementAlias match_DatamartTask___ColumnsKeyword_2_0_LeftCurlyBracketKeyword_2_1_RightCurlyBracketKeyword_2_3__q;
+	protected AbstractElementAlias match_DatamartTask___ConditionsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__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 = (DatamartDSLGrammarAccess) access;
+		match_DatamartDefinition___ForKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartDefinitionAccess().getForKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getDatamartDefinitionAccess().getLeftCurlyBracketKeyword_3_1()), new TokenAlias(false, false, grammarAccess.getDatamartDefinitionAccess().getRightCurlyBracketKeyword_3_3()));
+		match_DatamartEntity___ConditionsKeyword_6_0_LeftCurlyBracketKeyword_6_1_RightCurlyBracketKeyword_6_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getConditionsKeyword_6_0()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_6_1()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_6_3()));
+		match_DatamartEntity___NavigationKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getNavigationKeyword_4_0()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_4_1()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_4_3()));
+		match_DatamartEntity___OrderingKeyword_7_0_LeftCurlyBracketKeyword_7_1_RightCurlyBracketKeyword_7_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getOrderingKeyword_7_0()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_7_1()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_7_3()));
+		match_DatamartEntity___PropertiesKeyword_5_0_LeftCurlyBracketKeyword_5_1_RightCurlyBracketKeyword_5_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getPropertiesKeyword_5_0()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getLeftCurlyBracketKeyword_5_1()), new TokenAlias(false, false, grammarAccess.getDatamartEntityAccess().getRightCurlyBracketKeyword_5_3()));
+		match_DatamartOperand_LeftParenthesisKeyword_1_0_a = new TokenAlias(true, true, grammarAccess.getDatamartOperandAccess().getLeftParenthesisKeyword_1_0());
+		match_DatamartOperand_LeftParenthesisKeyword_1_0_p = new TokenAlias(true, false, grammarAccess.getDatamartOperandAccess().getLeftParenthesisKeyword_1_0());
+		match_DatamartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getDatamartPackageAccess().getRightCurlyBracketKeyword_3_3()));
+		match_DatamartPrimary_LeftParenthesisKeyword_1_0_a = new TokenAlias(true, true, grammarAccess.getDatamartPrimaryAccess().getLeftParenthesisKeyword_1_0());
+		match_DatamartPrimary_LeftParenthesisKeyword_1_0_p = new TokenAlias(true, false, grammarAccess.getDatamartPrimaryAccess().getLeftParenthesisKeyword_1_0());
+		match_DatamartTask___ColumnsKeyword_2_0_LeftCurlyBracketKeyword_2_1_RightCurlyBracketKeyword_2_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartTaskAccess().getColumnsKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_2_1()), new TokenAlias(false, false, grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_2_3()));
+		match_DatamartTask___ConditionsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDatamartTaskAccess().getConditionsKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getDatamartTaskAccess().getLeftCurlyBracketKeyword_3_1()), new TokenAlias(false, false, grammarAccess.getDatamartTaskAccess().getRightCurlyBracketKeyword_3_3()));
+		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_DatamartDefinition___ForKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_DatamartDefinition___ForKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartEntity___ConditionsKeyword_6_0_LeftCurlyBracketKeyword_6_1_RightCurlyBracketKeyword_6_3__q.equals(syntax))
+				emit_DatamartEntity___ConditionsKeyword_6_0_LeftCurlyBracketKeyword_6_1_RightCurlyBracketKeyword_6_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartEntity___NavigationKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q.equals(syntax))
+				emit_DatamartEntity___NavigationKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartEntity___OrderingKeyword_7_0_LeftCurlyBracketKeyword_7_1_RightCurlyBracketKeyword_7_3__q.equals(syntax))
+				emit_DatamartEntity___OrderingKeyword_7_0_LeftCurlyBracketKeyword_7_1_RightCurlyBracketKeyword_7_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartEntity___PropertiesKeyword_5_0_LeftCurlyBracketKeyword_5_1_RightCurlyBracketKeyword_5_3__q.equals(syntax))
+				emit_DatamartEntity___PropertiesKeyword_5_0_LeftCurlyBracketKeyword_5_1_RightCurlyBracketKeyword_5_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartOperand_LeftParenthesisKeyword_1_0_a.equals(syntax))
+				emit_DatamartOperand_LeftParenthesisKeyword_1_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartOperand_LeftParenthesisKeyword_1_0_p.equals(syntax))
+				emit_DatamartOperand_LeftParenthesisKeyword_1_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_DatamartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartPrimary_LeftParenthesisKeyword_1_0_a.equals(syntax))
+				emit_DatamartPrimary_LeftParenthesisKeyword_1_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartPrimary_LeftParenthesisKeyword_1_0_p.equals(syntax))
+				emit_DatamartPrimary_LeftParenthesisKeyword_1_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartTask___ColumnsKeyword_2_0_LeftCurlyBracketKeyword_2_1_RightCurlyBracketKeyword_2_3__q.equals(syntax))
+				emit_DatamartTask___ColumnsKeyword_2_0_LeftCurlyBracketKeyword_2_1_RightCurlyBracketKeyword_2_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DatamartTask___ConditionsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_DatamartTask___ConditionsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__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:
+	 *     ('for' '{' '}')?
+	 */
+	protected void emit_DatamartDefinition___ForKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('conditions' '{' '}')?
+	 */
+	protected void emit_DatamartEntity___ConditionsKeyword_6_0_LeftCurlyBracketKeyword_6_1_RightCurlyBracketKeyword_6_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('navigation' '{' '}')?
+	 */
+	protected void emit_DatamartEntity___NavigationKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('ordering' '{' '}')?
+	 */
+	protected void emit_DatamartEntity___OrderingKeyword_7_0_LeftCurlyBracketKeyword_7_1_RightCurlyBracketKeyword_7_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('properties' '{' '}')?
+	 */
+	protected void emit_DatamartEntity___PropertiesKeyword_5_0_LeftCurlyBracketKeyword_5_1_RightCurlyBracketKeyword_5_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('*
+	 */
+	protected void emit_DatamartOperand_LeftParenthesisKeyword_1_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('+
+	 */
+	protected void emit_DatamartOperand_LeftParenthesisKeyword_1_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_DatamartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('*
+	 */
+	protected void emit_DatamartPrimary_LeftParenthesisKeyword_1_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('+
+	 */
+	protected void emit_DatamartPrimary_LeftParenthesisKeyword_1_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('columns' '{' '}')?
+	 */
+	protected void emit_DatamartTask___ColumnsKeyword_2_0_LeftCurlyBracketKeyword_2_1_RightCurlyBracketKeyword_2_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('conditions' '{' '}')?
+	 */
+	protected void emit_DatamartTask___ConditionsKeyword_3_0_LeftCurlyBracketKeyword_3_1_RightCurlyBracketKeyword_3_3__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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/services/DatamartDSLGrammarAccess.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/services/DatamartDSLGrammarAccess.java
new file mode 100644
index 0000000..5d72275
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/services/DatamartDSLGrammarAccess.java
@@ -0,0 +1,5936 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 DatamartDSLGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class DatamartModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesDatamartPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//DatamartModel returns datamart::DatamartModel:
+		//	packages+=DatamartPackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=DatamartPackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//DatamartPackage
+		public RuleCall getPackagesDatamartPackageParserRuleCall_0() { return cPackagesDatamartPackageParserRuleCall_0; }
+	}
+
+	public class DatamartPackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartPackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cDatamartPackageAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cPackageKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameQualifiedNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cImportsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cImportsDatamartImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
+		private final Assignment cDefinitionsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cDefinitionsDatamartDefinitionParserRuleCall_3_2_0 = (RuleCall)cDefinitionsAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		
+		//DatamartPackage returns datamart::DatamartPackage:
+		//	{datamart::DatamartPackage} "package" name=QualifiedName ("{" imports+=DatamartImport*
+		//	definitions+=DatamartDefinition* "}")?;
+		public ParserRule getRule() { return rule; }
+
+		//{datamart::DatamartPackage} "package" name=QualifiedName ("{" imports+=DatamartImport* definitions+=DatamartDefinition*
+		//"}")?
+		public Group getGroup() { return cGroup; }
+
+		//{datamart::DatamartPackage}
+		public Action getDatamartPackageAction_0() { return cDatamartPackageAction_0; }
+
+		//"package"
+		public Keyword getPackageKeyword_1() { return cPackageKeyword_1; }
+
+		//name=QualifiedName
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//QualifiedName
+		public RuleCall getNameQualifiedNameParserRuleCall_2_0() { return cNameQualifiedNameParserRuleCall_2_0; }
+
+		//("{" imports+=DatamartImport* definitions+=DatamartDefinition* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
+
+		//imports+=DatamartImport*
+		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
+
+		//DatamartImport
+		public RuleCall getImportsDatamartImportParserRuleCall_3_1_0() { return cImportsDatamartImportParserRuleCall_3_1_0; }
+
+		//definitions+=DatamartDefinition*
+		public Assignment getDefinitionsAssignment_3_2() { return cDefinitionsAssignment_3_2; }
+
+		//DatamartDefinition
+		public RuleCall getDefinitionsDatamartDefinitionParserRuleCall_3_2_0() { return cDefinitionsDatamartDefinitionParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+	}
+
+	public class DatamartDefinitionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartDefinition");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDatamartKeyword_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 cDescriptionAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cDescriptionDescribedByKeyword_2_0_0 = (Keyword)cDescriptionAssignment_2_0.eContents().get(0);
+		private final Assignment cDescriptionValueAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0 = (RuleCall)cDescriptionValueAssignment_2_1.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cForKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cRolesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cRolesDatamartRoleParserRuleCall_3_2_0 = (RuleCall)cRolesAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		private final Keyword cUsingKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cSourceAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cSourceDatamartSourceParserRuleCall_5_0 = (RuleCall)cSourceAssignment_5.eContents().get(0);
+		
+		//DatamartDefinition returns datamart::DatamartDefinition:
+		//	"datamart" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("for" "{" roles+=DatamartRole*
+		//	"}")? "using" source=DatamartSource;
+		public ParserRule getRule() { return rule; }
+
+		//"datamart" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("for" "{" roles+=DatamartRole*
+		//"}")? "using" source=DatamartSource
+		public Group getGroup() { return cGroup; }
+
+		//"datamart"
+		public Keyword getDatamartKeyword_0() { return cDatamartKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//description?="described by"
+		public Assignment getDescriptionAssignment_2_0() { return cDescriptionAssignment_2_0; }
+
+		//"described by"
+		public Keyword getDescriptionDescribedByKeyword_2_0_0() { return cDescriptionDescribedByKeyword_2_0_0; }
+
+		//descriptionValue=TRANSLATABLESTRING
+		public Assignment getDescriptionValueAssignment_2_1() { return cDescriptionValueAssignment_2_1; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_2_1_0; }
+
+		//("for" "{" roles+=DatamartRole* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"for"
+		public Keyword getForKeyword_3_0() { return cForKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//roles+=DatamartRole*
+		public Assignment getRolesAssignment_3_2() { return cRolesAssignment_3_2; }
+
+		//DatamartRole
+		public RuleCall getRolesDatamartRoleParserRuleCall_3_2_0() { return cRolesDatamartRoleParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+
+		//"using"
+		public Keyword getUsingKeyword_4() { return cUsingKeyword_4; }
+
+		//source=DatamartSource
+		public Assignment getSourceAssignment_5() { return cSourceAssignment_5; }
+
+		//DatamartSource
+		public RuleCall getSourceDatamartSourceParserRuleCall_5_0() { return cSourceDatamartSourceParserRuleCall_5_0; }
+	}
+
+	public class DatamartRoleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartRole");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cRoleKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cAssignedRoleAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cAssignedRoleRoleCrossReference_1_0 = (CrossReference)cAssignedRoleAssignment_1.eContents().get(0);
+		private final RuleCall cAssignedRoleRoleIDTerminalRuleCall_1_0_1 = (RuleCall)cAssignedRoleRoleCrossReference_1_0.eContents().get(1);
+		
+		//DatamartRole returns datamart::DatamartRole:
+		//	"role" assignedRole=[authorization::Role];
+		public ParserRule getRule() { return rule; }
+
+		//"role" assignedRole=[authorization::Role]
+		public Group getGroup() { return cGroup; }
+
+		//"role"
+		public Keyword getRoleKeyword_0() { return cRoleKeyword_0; }
+
+		//assignedRole=[authorization::Role]
+		public Assignment getAssignedRoleAssignment_1() { return cAssignedRoleAssignment_1; }
+
+		//[authorization::Role]
+		public CrossReference getAssignedRoleRoleCrossReference_1_0() { return cAssignedRoleRoleCrossReference_1_0; }
+
+		//ID
+		public RuleCall getAssignedRoleRoleIDTerminalRuleCall_1_0_1() { return cAssignedRoleRoleIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class DatamartSourceElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSource");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDatamartCubeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDatamartEntityParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDatamartTaskParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//DatamartSource returns datamart::DatamartSource:
+		//	DatamartCube | DatamartEntity | DatamartTask;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartCube | DatamartEntity | DatamartTask
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DatamartCube
+		public RuleCall getDatamartCubeParserRuleCall_0() { return cDatamartCubeParserRuleCall_0; }
+
+		//DatamartEntity
+		public RuleCall getDatamartEntityParserRuleCall_1() { return cDatamartEntityParserRuleCall_1; }
+
+		//DatamartTask
+		public RuleCall getDatamartTaskParserRuleCall_2() { return cDatamartTaskParserRuleCall_2; }
+	}
+
+	public class DatamartTaskElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartTask");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cTaskKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cTaskQueryAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cTaskQueryTaskQueryTopicEnumEnumRuleCall_1_0 = (RuleCall)cTaskQueryAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cColumnsKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
+		private final Assignment cColumnsAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cColumnsDatamartColumnParserRuleCall_2_2_0 = (RuleCall)cColumnsAssignment_2_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cConditionsKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cConditionsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cConditionsDatamartConditionParserRuleCall_3_2_0 = (RuleCall)cConditionsAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		
+		//DatamartTask returns datamart::DatamartTask:
+		//	"task" taskQuery=TaskQueryTopicEnum ("columns" "{" columns+=DatamartColumn* "}")? ("conditions" "{"
+		//	conditions+=DatamartCondition* "}")?;
+		public ParserRule getRule() { return rule; }
+
+		//"task" taskQuery=TaskQueryTopicEnum ("columns" "{" columns+=DatamartColumn* "}")? ("conditions" "{"
+		//conditions+=DatamartCondition* "}")?
+		public Group getGroup() { return cGroup; }
+
+		//"task"
+		public Keyword getTaskKeyword_0() { return cTaskKeyword_0; }
+
+		//taskQuery=TaskQueryTopicEnum
+		public Assignment getTaskQueryAssignment_1() { return cTaskQueryAssignment_1; }
+
+		//TaskQueryTopicEnum
+		public RuleCall getTaskQueryTaskQueryTopicEnumEnumRuleCall_1_0() { return cTaskQueryTaskQueryTopicEnumEnumRuleCall_1_0; }
+
+		//("columns" "{" columns+=DatamartColumn* "}")?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"columns"
+		public Keyword getColumnsKeyword_2_0() { return cColumnsKeyword_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_1() { return cLeftCurlyBracketKeyword_2_1; }
+
+		//columns+=DatamartColumn*
+		public Assignment getColumnsAssignment_2_2() { return cColumnsAssignment_2_2; }
+
+		//DatamartColumn
+		public RuleCall getColumnsDatamartColumnParserRuleCall_2_2_0() { return cColumnsDatamartColumnParserRuleCall_2_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_3() { return cRightCurlyBracketKeyword_2_3; }
+
+		//("conditions" "{" conditions+=DatamartCondition* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"conditions"
+		public Keyword getConditionsKeyword_3_0() { return cConditionsKeyword_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_1() { return cLeftCurlyBracketKeyword_3_1; }
+
+		//conditions+=DatamartCondition*
+		public Assignment getConditionsAssignment_3_2() { return cConditionsAssignment_3_2; }
+
+		//DatamartCondition
+		public RuleCall getConditionsDatamartConditionParserRuleCall_3_2_0() { return cConditionsDatamartConditionParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+	}
+
+	public class DatamartColumnElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartColumn");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cColumnKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cColumnRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cColumnRefTaskQueryColumnEnumEnumRuleCall_1_0 = (RuleCall)cColumnRefAssignment_1.eContents().get(0);
+		
+		//DatamartColumn returns datamart::DatamartColumn:
+		//	"column" columnRef=TaskQueryColumnEnum;
+		public ParserRule getRule() { return rule; }
+
+		//"column" columnRef=TaskQueryColumnEnum
+		public Group getGroup() { return cGroup; }
+
+		//"column"
+		public Keyword getColumnKeyword_0() { return cColumnKeyword_0; }
+
+		//columnRef=TaskQueryColumnEnum
+		public Assignment getColumnRefAssignment_1() { return cColumnRefAssignment_1; }
+
+		//TaskQueryColumnEnum
+		public RuleCall getColumnRefTaskQueryColumnEnumEnumRuleCall_1_0() { return cColumnRefTaskQueryColumnEnumEnumRuleCall_1_0; }
+	}
+
+	public class DatamartTaskFilterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartTaskFilter");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFilterKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cFilterRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cFilterRefTaskFilterEnumEnumRuleCall_1_0 = (RuleCall)cFilterRefAssignment_1.eContents().get(0);
+		
+		//DatamartTaskFilter returns datamart::DatamartTaskFilter:
+		//	"filter" filterRef=TaskFilterEnum;
+		public ParserRule getRule() { return rule; }
+
+		//"filter" filterRef=TaskFilterEnum
+		public Group getGroup() { return cGroup; }
+
+		//"filter"
+		public Keyword getFilterKeyword_0() { return cFilterKeyword_0; }
+
+		//filterRef=TaskFilterEnum
+		public Assignment getFilterRefAssignment_1() { return cFilterRefAssignment_1; }
+
+		//TaskFilterEnum
+		public RuleCall getFilterRefTaskFilterEnumEnumRuleCall_1_0() { return cFilterRefTaskFilterEnumEnumRuleCall_1_0; }
+	}
+
+	public class DatamartCubeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartCube");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCubeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cCubeRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cCubeRefCubeTypeCrossReference_1_0 = (CrossReference)cCubeRefAssignment_1.eContents().get(0);
+		private final RuleCall cCubeRefCubeTypeIDTerminalRuleCall_1_0_1 = (RuleCall)cCubeRefCubeTypeCrossReference_1_0.eContents().get(1);
+		private final Assignment cNonEmptyAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cNonEmptyNonemptyValuesKeyword_2_0 = (Keyword)cNonEmptyAssignment_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cAxisslicerAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cAxisslicerDatamartCubeElementParserRuleCall_4_0 = (RuleCall)cAxisslicerAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//DatamartCube returns datamart::DatamartCube:
+		//	"cube" cubeRef=[cube::CubeType] nonEmpty?="nonempty values"? "{" axisslicer+=DatamartCubeElement* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"cube" cubeRef=[cube::CubeType] nonEmpty?="nonempty values"? "{" axisslicer+=DatamartCubeElement* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"cube"
+		public Keyword getCubeKeyword_0() { return cCubeKeyword_0; }
+
+		//cubeRef=[cube::CubeType]
+		public Assignment getCubeRefAssignment_1() { return cCubeRefAssignment_1; }
+
+		//[cube::CubeType]
+		public CrossReference getCubeRefCubeTypeCrossReference_1_0() { return cCubeRefCubeTypeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getCubeRefCubeTypeIDTerminalRuleCall_1_0_1() { return cCubeRefCubeTypeIDTerminalRuleCall_1_0_1; }
+
+		//nonEmpty?="nonempty values"?
+		public Assignment getNonEmptyAssignment_2() { return cNonEmptyAssignment_2; }
+
+		//"nonempty values"
+		public Keyword getNonEmptyNonemptyValuesKeyword_2_0() { return cNonEmptyNonemptyValuesKeyword_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//axisslicer+=DatamartCubeElement*
+		public Assignment getAxisslicerAssignment_4() { return cAxisslicerAssignment_4; }
+
+		//DatamartCubeElement
+		public RuleCall getAxisslicerDatamartCubeElementParserRuleCall_4_0() { return cAxisslicerDatamartCubeElementParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class DatamartReferenceElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartReference");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cJoinKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cRefLEntityReferenceCrossReference_1_0 = (CrossReference)cRefAssignment_1.eContents().get(0);
+		private final RuleCall cRefLEntityReferenceIDTerminalRuleCall_1_0_1 = (RuleCall)cRefLEntityReferenceCrossReference_1_0.eContents().get(1);
+		
+		//DatamartReference returns datamart::DatamartReference:
+		//	"join" ref=[entity::LEntityReference];
+		public ParserRule getRule() { return rule; }
+
+		//"join" ref=[entity::LEntityReference]
+		public Group getGroup() { return cGroup; }
+
+		//"join"
+		public Keyword getJoinKeyword_0() { return cJoinKeyword_0; }
+
+		//ref=[entity::LEntityReference]
+		public Assignment getRefAssignment_1() { return cRefAssignment_1; }
+
+		//[entity::LEntityReference]
+		public CrossReference getRefLEntityReferenceCrossReference_1_0() { return cRefLEntityReferenceCrossReference_1_0; }
+
+		//ID
+		public RuleCall getRefLEntityReferenceIDTerminalRuleCall_1_0_1() { return cRefLEntityReferenceIDTerminalRuleCall_1_0_1; }
+	}
+
+	public class DatamartEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartEntity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cEntityKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cEntityRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cEntityRefLEntityCrossReference_1_0 = (CrossReference)cEntityRefAssignment_1.eContents().get(0);
+		private final RuleCall cEntityRefLEntityIDTerminalRuleCall_1_0_1 = (RuleCall)cEntityRefLEntityCrossReference_1_0.eContents().get(1);
+		private final Assignment cTrackingAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cTrackingTrackingKeyword_2_0 = (Keyword)cTrackingAssignment_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cNavigationKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_4_1 = (Keyword)cGroup_4.eContents().get(1);
+		private final Assignment cNavigationsAssignment_4_2 = (Assignment)cGroup_4.eContents().get(2);
+		private final RuleCall cNavigationsDatamartNavigationParserRuleCall_4_2_0 = (RuleCall)cNavigationsAssignment_4_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cPropertiesKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Assignment cPropertiesAssignment_5_2 = (Assignment)cGroup_5.eContents().get(2);
+		private final RuleCall cPropertiesDatamartPropertyParserRuleCall_5_2_0 = (RuleCall)cPropertiesAssignment_5_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5_3 = (Keyword)cGroup_5.eContents().get(3);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cConditionsKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6_1 = (Keyword)cGroup_6.eContents().get(1);
+		private final Assignment cConditionsAssignment_6_2 = (Assignment)cGroup_6.eContents().get(2);
+		private final RuleCall cConditionsDatamartConditionParserRuleCall_6_2_0 = (RuleCall)cConditionsAssignment_6_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_3 = (Keyword)cGroup_6.eContents().get(3);
+		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
+		private final Keyword cOrderingKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_7_1 = (Keyword)cGroup_7.eContents().get(1);
+		private final Assignment cOrderingAssignment_7_2 = (Assignment)cGroup_7.eContents().get(2);
+		private final RuleCall cOrderingDatamartOrderParserRuleCall_7_2_0 = (RuleCall)cOrderingAssignment_7_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7_3 = (Keyword)cGroup_7.eContents().get(3);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Keyword cFillerRowsKeyword_8_0 = (Keyword)cGroup_8.eContents().get(0);
+		private final Assignment cFillerMinCountRowsAssignment_8_1 = (Assignment)cGroup_8.eContents().get(1);
+		private final RuleCall cFillerMinCountRowsINTTerminalRuleCall_8_1_0 = (RuleCall)cFillerMinCountRowsAssignment_8_1.eContents().get(0);
+		private final Keyword cToKeyword_8_2 = (Keyword)cGroup_8.eContents().get(2);
+		private final Assignment cFillerMaxCountRowsAssignment_8_3 = (Assignment)cGroup_8.eContents().get(3);
+		private final RuleCall cFillerMaxCountRowsINTTerminalRuleCall_8_3_0 = (RuleCall)cFillerMaxCountRowsAssignment_8_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_8_4 = (Keyword)cGroup_8.eContents().get(4);
+		private final Assignment cFillerDatasAssignment_8_5 = (Assignment)cGroup_8.eContents().get(5);
+		private final RuleCall cFillerDatasPropertyFillerDataParserRuleCall_8_5_0 = (RuleCall)cFillerDatasAssignment_8_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8_6 = (Keyword)cGroup_8.eContents().get(6);
+		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		
+		////DotExpression returns datamart::Ref:
+		////    EntityRef ({datamart::DotExpression.ref=current}  "." 
+		////    	tail=[entity::LEntityReference]
+		////    )*;
+		//// 
+		////EntityRef returns datamart::Ref:
+		////    {datamart::EntityRef} entity=[entity::LEntity]; 
+		//DatamartEntity returns datamart::DatamartEntity:
+		//	"entity" entityRef=[entity::LEntity] tracking?="tracking"? "{" ("navigation" "{" navigations+=DatamartNavigation*
+		//	"}")? ("properties" "{" properties+=DatamartProperty* "}")? ("conditions" "{" conditions+=DatamartCondition* "}")?
+		//	("ordering" "{" ordering+=DatamartOrder* "}")? ("filler rows" fillerMinCountRows=INT "to" fillerMaxCountRows=INT "{"
+		//	fillerDatas+=PropertyFillerData* "}")? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"entity" entityRef=[entity::LEntity] tracking?="tracking"? "{" ("navigation" "{" navigations+=DatamartNavigation* "}")?
+		//("properties" "{" properties+=DatamartProperty* "}")? ("conditions" "{" conditions+=DatamartCondition* "}")?
+		//("ordering" "{" ordering+=DatamartOrder* "}")? ("filler rows" fillerMinCountRows=INT "to" fillerMaxCountRows=INT "{"
+		//fillerDatas+=PropertyFillerData* "}")? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"entity"
+		public Keyword getEntityKeyword_0() { return cEntityKeyword_0; }
+
+		//entityRef=[entity::LEntity]
+		public Assignment getEntityRefAssignment_1() { return cEntityRefAssignment_1; }
+
+		//[entity::LEntity]
+		public CrossReference getEntityRefLEntityCrossReference_1_0() { return cEntityRefLEntityCrossReference_1_0; }
+
+		//ID
+		public RuleCall getEntityRefLEntityIDTerminalRuleCall_1_0_1() { return cEntityRefLEntityIDTerminalRuleCall_1_0_1; }
+
+		//tracking?="tracking"?
+		public Assignment getTrackingAssignment_2() { return cTrackingAssignment_2; }
+
+		//"tracking"
+		public Keyword getTrackingTrackingKeyword_2_0() { return cTrackingTrackingKeyword_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//("navigation" "{" navigations+=DatamartNavigation* "}")?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//"navigation"
+		public Keyword getNavigationKeyword_4_0() { return cNavigationKeyword_4_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_4_1() { return cLeftCurlyBracketKeyword_4_1; }
+
+		//navigations+=DatamartNavigation*
+		public Assignment getNavigationsAssignment_4_2() { return cNavigationsAssignment_4_2; }
+
+		//DatamartNavigation
+		public RuleCall getNavigationsDatamartNavigationParserRuleCall_4_2_0() { return cNavigationsDatamartNavigationParserRuleCall_4_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4_3() { return cRightCurlyBracketKeyword_4_3; }
+
+		//("properties" "{" properties+=DatamartProperty* "}")?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_5_0() { return cPropertiesKeyword_5_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_5_1() { return cLeftCurlyBracketKeyword_5_1; }
+
+		//properties+=DatamartProperty*
+		public Assignment getPropertiesAssignment_5_2() { return cPropertiesAssignment_5_2; }
+
+		//DatamartProperty
+		public RuleCall getPropertiesDatamartPropertyParserRuleCall_5_2_0() { return cPropertiesDatamartPropertyParserRuleCall_5_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5_3() { return cRightCurlyBracketKeyword_5_3; }
+
+		//("conditions" "{" conditions+=DatamartCondition* "}")?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//"conditions"
+		public Keyword getConditionsKeyword_6_0() { return cConditionsKeyword_6_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1() { return cLeftCurlyBracketKeyword_6_1; }
+
+		//conditions+=DatamartCondition*
+		public Assignment getConditionsAssignment_6_2() { return cConditionsAssignment_6_2; }
+
+		//DatamartCondition
+		public RuleCall getConditionsDatamartConditionParserRuleCall_6_2_0() { return cConditionsDatamartConditionParserRuleCall_6_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_3() { return cRightCurlyBracketKeyword_6_3; }
+
+		//("ordering" "{" ordering+=DatamartOrder* "}")?
+		public Group getGroup_7() { return cGroup_7; }
+
+		//"ordering"
+		public Keyword getOrderingKeyword_7_0() { return cOrderingKeyword_7_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7_1() { return cLeftCurlyBracketKeyword_7_1; }
+
+		//ordering+=DatamartOrder*
+		public Assignment getOrderingAssignment_7_2() { return cOrderingAssignment_7_2; }
+
+		//DatamartOrder
+		public RuleCall getOrderingDatamartOrderParserRuleCall_7_2_0() { return cOrderingDatamartOrderParserRuleCall_7_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_7_3() { return cRightCurlyBracketKeyword_7_3; }
+
+		//("filler rows" fillerMinCountRows=INT "to" fillerMaxCountRows=INT "{" fillerDatas+=PropertyFillerData* "}")?
+		public Group getGroup_8() { return cGroup_8; }
+
+		//"filler rows"
+		public Keyword getFillerRowsKeyword_8_0() { return cFillerRowsKeyword_8_0; }
+
+		//fillerMinCountRows=INT
+		public Assignment getFillerMinCountRowsAssignment_8_1() { return cFillerMinCountRowsAssignment_8_1; }
+
+		//INT
+		public RuleCall getFillerMinCountRowsINTTerminalRuleCall_8_1_0() { return cFillerMinCountRowsINTTerminalRuleCall_8_1_0; }
+
+		//"to"
+		public Keyword getToKeyword_8_2() { return cToKeyword_8_2; }
+
+		//fillerMaxCountRows=INT
+		public Assignment getFillerMaxCountRowsAssignment_8_3() { return cFillerMaxCountRowsAssignment_8_3; }
+
+		//INT
+		public RuleCall getFillerMaxCountRowsINTTerminalRuleCall_8_3_0() { return cFillerMaxCountRowsINTTerminalRuleCall_8_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_8_4() { return cLeftCurlyBracketKeyword_8_4; }
+
+		//fillerDatas+=PropertyFillerData*
+		public Assignment getFillerDatasAssignment_8_5() { return cFillerDatasAssignment_8_5; }
+
+		//PropertyFillerData
+		public RuleCall getFillerDatasPropertyFillerDataParserRuleCall_8_5_0() { return cFillerDatasPropertyFillerDataParserRuleCall_8_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8_6() { return cRightCurlyBracketKeyword_8_6; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+	}
+
+	public class DatamartNavigationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartNavigation");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDatamartOwnerParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDatamartMemberParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//DatamartNavigation returns datamart::DatamartNavigation:
+		//	DatamartOwner | DatamartMember;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartOwner | DatamartMember
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DatamartOwner
+		public RuleCall getDatamartOwnerParserRuleCall_0() { return cDatamartOwnerParserRuleCall_0; }
+
+		//DatamartMember
+		public RuleCall getDatamartMemberParserRuleCall_1() { return cDatamartMemberParserRuleCall_1; }
+	}
+
+	public class DatamartOwnerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartOwner");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cManyToOneKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cJoinRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cJoinRefDatamartReferenceParserRuleCall_1_0 = (RuleCall)cJoinRefAssignment_1.eContents().get(0);
+		private final Keyword cToKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDatamartEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDatamartEntityDatamartEntityParserRuleCall_3_0 = (RuleCall)cDatamartEntityAssignment_3.eContents().get(0);
+		
+		//DatamartOwner returns datamart::DatamartOwner:
+		//	"many to one" joinRef=DatamartReference "to" datamartEntity=DatamartEntity;
+		public ParserRule getRule() { return rule; }
+
+		//"many to one" joinRef=DatamartReference "to" datamartEntity=DatamartEntity
+		public Group getGroup() { return cGroup; }
+
+		//"many to one"
+		public Keyword getManyToOneKeyword_0() { return cManyToOneKeyword_0; }
+
+		//joinRef=DatamartReference
+		public Assignment getJoinRefAssignment_1() { return cJoinRefAssignment_1; }
+
+		//DatamartReference
+		public RuleCall getJoinRefDatamartReferenceParserRuleCall_1_0() { return cJoinRefDatamartReferenceParserRuleCall_1_0; }
+
+		//"to"
+		public Keyword getToKeyword_2() { return cToKeyword_2; }
+
+		//datamartEntity=DatamartEntity
+		public Assignment getDatamartEntityAssignment_3() { return cDatamartEntityAssignment_3; }
+
+		//DatamartEntity
+		public RuleCall getDatamartEntityDatamartEntityParserRuleCall_3_0() { return cDatamartEntityDatamartEntityParserRuleCall_3_0; }
+	}
+
+	public class DatamartMemberElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartMember");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cOneToManyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cJoinRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cJoinRefDatamartReferenceParserRuleCall_1_0 = (RuleCall)cJoinRefAssignment_1.eContents().get(0);
+		private final Keyword cToKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDatamartEntityAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDatamartEntityDatamartEntityParserRuleCall_3_0 = (RuleCall)cDatamartEntityAssignment_3.eContents().get(0);
+		
+		//DatamartMember returns datamart::DatamartMember:
+		//	"one to many" joinRef=DatamartReference "to" datamartEntity=DatamartEntity;
+		public ParserRule getRule() { return rule; }
+
+		//"one to many" joinRef=DatamartReference "to" datamartEntity=DatamartEntity
+		public Group getGroup() { return cGroup; }
+
+		//"one to many"
+		public Keyword getOneToManyKeyword_0() { return cOneToManyKeyword_0; }
+
+		//joinRef=DatamartReference
+		public Assignment getJoinRefAssignment_1() { return cJoinRefAssignment_1; }
+
+		//DatamartReference
+		public RuleCall getJoinRefDatamartReferenceParserRuleCall_1_0() { return cJoinRefDatamartReferenceParserRuleCall_1_0; }
+
+		//"to"
+		public Keyword getToKeyword_2() { return cToKeyword_2; }
+
+		//datamartEntity=DatamartEntity
+		public Assignment getDatamartEntityAssignment_3() { return cDatamartEntityAssignment_3; }
+
+		//DatamartEntity
+		public RuleCall getDatamartEntityDatamartEntityParserRuleCall_3_0() { return cDatamartEntityDatamartEntityParserRuleCall_3_0; }
+	}
+
+	public class DatamartPropertyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartProperty");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPropertyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cPropertyRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cPropertyRefLEntityAttributeCrossReference_1_0 = (CrossReference)cPropertyRefAssignment_1.eContents().get(0);
+		private final RuleCall cPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cPropertyRefLEntityAttributeCrossReference_1_0.eContents().get(1);
+		private final UnorderedGroup cUnorderedGroup_2 = (UnorderedGroup)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cUnorderedGroup_2.eContents().get(0);
+		private final Assignment cAggregatedAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
+		private final Keyword cAggregatedAggregateKeyword_2_0_0_0 = (Keyword)cAggregatedAssignment_2_0_0.eContents().get(0);
+		private final Assignment cAggregateAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
+		private final RuleCall cAggregateSqlAggregationEnumEnumRuleCall_2_0_1_0 = (RuleCall)cAggregateAssignment_2_0_1.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Assignment cPlacedAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
+		private final Keyword cPlacedOnAxisKeyword_2_1_0_0 = (Keyword)cPlacedAssignment_2_1_0.eContents().get(0);
+		private final Assignment cAxisAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
+		private final RuleCall cAxisAxisEnumEnumRuleCall_2_1_1_0 = (RuleCall)cAxisAssignment_2_1_1.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Assignment cScaledAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
+		private final Keyword cScaledScaleKeyword_2_2_0_0 = (Keyword)cScaledAssignment_2_2_0.eContents().get(0);
+		private final Assignment cScaleAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
+		private final RuleCall cScaleValueScaleEnumEnumRuleCall_2_2_1_0 = (RuleCall)cScaleAssignment_2_2_1.eContents().get(0);
+		
+		//DatamartProperty returns datamart::DatamartProperty:
+		//	"property" propertyRef=[entity::LEntityAttribute] ((aggregated?="aggregate" aggregate=SqlAggregationEnum)? &
+		//	(placed?="on axis" axis=AxisEnum)? & (scaled?="scale" scale=ValueScaleEnum)?);
+		public ParserRule getRule() { return rule; }
+
+		//"property" propertyRef=[entity::LEntityAttribute] ((aggregated?="aggregate" aggregate=SqlAggregationEnum)? &
+		//(placed?="on axis" axis=AxisEnum)? & (scaled?="scale" scale=ValueScaleEnum)?)
+		public Group getGroup() { return cGroup; }
+
+		//"property"
+		public Keyword getPropertyKeyword_0() { return cPropertyKeyword_0; }
+
+		//propertyRef=[entity::LEntityAttribute]
+		public Assignment getPropertyRefAssignment_1() { return cPropertyRefAssignment_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getPropertyRefLEntityAttributeCrossReference_1_0() { return cPropertyRefLEntityAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1() { return cPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1; }
+
+		//(aggregated?="aggregate" aggregate=SqlAggregationEnum)? & (placed?="on axis" axis=AxisEnum)? & (scaled?="scale"
+		//scale=ValueScaleEnum)?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//(aggregated?="aggregate" aggregate=SqlAggregationEnum)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//aggregated?="aggregate"
+		public Assignment getAggregatedAssignment_2_0_0() { return cAggregatedAssignment_2_0_0; }
+
+		//"aggregate"
+		public Keyword getAggregatedAggregateKeyword_2_0_0_0() { return cAggregatedAggregateKeyword_2_0_0_0; }
+
+		//aggregate=SqlAggregationEnum
+		public Assignment getAggregateAssignment_2_0_1() { return cAggregateAssignment_2_0_1; }
+
+		//SqlAggregationEnum
+		public RuleCall getAggregateSqlAggregationEnumEnumRuleCall_2_0_1_0() { return cAggregateSqlAggregationEnumEnumRuleCall_2_0_1_0; }
+
+		//(placed?="on axis" axis=AxisEnum)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//placed?="on axis"
+		public Assignment getPlacedAssignment_2_1_0() { return cPlacedAssignment_2_1_0; }
+
+		//"on axis"
+		public Keyword getPlacedOnAxisKeyword_2_1_0_0() { return cPlacedOnAxisKeyword_2_1_0_0; }
+
+		//axis=AxisEnum
+		public Assignment getAxisAssignment_2_1_1() { return cAxisAssignment_2_1_1; }
+
+		//AxisEnum
+		public RuleCall getAxisAxisEnumEnumRuleCall_2_1_1_0() { return cAxisAxisEnumEnumRuleCall_2_1_1_0; }
+
+		//(scaled?="scale" scale=ValueScaleEnum)?
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//scaled?="scale"
+		public Assignment getScaledAssignment_2_2_0() { return cScaledAssignment_2_2_0; }
+
+		//"scale"
+		public Keyword getScaledScaleKeyword_2_2_0_0() { return cScaledScaleKeyword_2_2_0_0; }
+
+		//scale=ValueScaleEnum
+		public Assignment getScaleAssignment_2_2_1() { return cScaleAssignment_2_2_1; }
+
+		//ValueScaleEnum
+		public RuleCall getScaleValueScaleEnumEnumRuleCall_2_2_1_0() { return cScaleValueScaleEnumEnumRuleCall_2_2_1_0; }
+	}
+
+	public class DatamartConditionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartCondition");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cConditionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cConditionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cConditionDatamartDisjunctionParserRuleCall_1_0 = (RuleCall)cConditionAssignment_1.eContents().get(0);
+		
+		//DatamartCondition returns datamart::DatamartCondition:
+		//	"condition" condition=DatamartDisjunction;
+		public ParserRule getRule() { return rule; }
+
+		//"condition" condition=DatamartDisjunction
+		public Group getGroup() { return cGroup; }
+
+		//"condition"
+		public Keyword getConditionKeyword_0() { return cConditionKeyword_0; }
+
+		//condition=DatamartDisjunction
+		public Assignment getConditionAssignment_1() { return cConditionAssignment_1; }
+
+		//DatamartDisjunction
+		public RuleCall getConditionDatamartDisjunctionParserRuleCall_1_0() { return cConditionDatamartDisjunctionParserRuleCall_1_0; }
+	}
+
+	public class DatamartOrderElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartOrder");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cOrderKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cOrderByAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cOrderByLEntityAttributeCrossReference_1_0 = (CrossReference)cOrderByAssignment_1.eContents().get(0);
+		private final RuleCall cOrderByLEntityAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cOrderByLEntityAttributeCrossReference_1_0.eContents().get(1);
+		private final Assignment cOrderHowAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cOrderHowOrderEnumEnumRuleCall_2_0 = (RuleCall)cOrderHowAssignment_2.eContents().get(0);
+		
+		//DatamartOrder returns datamart::DatamartOrder:
+		//	"order" orderBy=[entity::LEntityAttribute] orderHow=OrderEnum;
+		public ParserRule getRule() { return rule; }
+
+		//"order" orderBy=[entity::LEntityAttribute] orderHow=OrderEnum
+		public Group getGroup() { return cGroup; }
+
+		//"order"
+		public Keyword getOrderKeyword_0() { return cOrderKeyword_0; }
+
+		//orderBy=[entity::LEntityAttribute]
+		public Assignment getOrderByAssignment_1() { return cOrderByAssignment_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getOrderByLEntityAttributeCrossReference_1_0() { return cOrderByLEntityAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getOrderByLEntityAttributeIDTerminalRuleCall_1_0_1() { return cOrderByLEntityAttributeIDTerminalRuleCall_1_0_1; }
+
+		//orderHow=OrderEnum
+		public Assignment getOrderHowAssignment_2() { return cOrderHowAssignment_2; }
+
+		//OrderEnum
+		public RuleCall getOrderHowOrderEnumEnumRuleCall_2_0() { return cOrderHowOrderEnumEnumRuleCall_2_0; }
+	}
+
+	public class DatamartDisjunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartDisjunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cDatamartConjunctionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
+		private final Action cDisjunctionLeftAction_1_0_0 = (Action)cGroup_1_0.eContents().get(0);
+		private final Keyword cOrKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
+		private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cRightDatamartConjunctionParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+		
+		//DatamartDisjunction returns datamart::Expression:
+		//	DatamartConjunction (({datamart::Disjunction.left=current} "or") right=DatamartConjunction)*;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartConjunction (({datamart::Disjunction.left=current} "or") right=DatamartConjunction)*
+		public Group getGroup() { return cGroup; }
+
+		//DatamartConjunction
+		public RuleCall getDatamartConjunctionParserRuleCall_0() { return cDatamartConjunctionParserRuleCall_0; }
+
+		//(({datamart::Disjunction.left=current} "or") right=DatamartConjunction)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{datamart::Disjunction.left=current} "or"
+		public Group getGroup_1_0() { return cGroup_1_0; }
+
+		//{datamart::Disjunction.left=current}
+		public Action getDisjunctionLeftAction_1_0_0() { return cDisjunctionLeftAction_1_0_0; }
+
+		//"or"
+		public Keyword getOrKeyword_1_0_1() { return cOrKeyword_1_0_1; }
+
+		//right=DatamartConjunction
+		public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+		//DatamartConjunction
+		public RuleCall getRightDatamartConjunctionParserRuleCall_1_1_0() { return cRightDatamartConjunctionParserRuleCall_1_1_0; }
+	}
+
+	public class DatamartConjunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartConjunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cDatamartConditionalExpressionParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
+		private final Action cConjunctionLeftAction_1_0_0 = (Action)cGroup_1_0.eContents().get(0);
+		private final Keyword cAndKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
+		private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cRightDatamartConditionalExpressionParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+		
+		//DatamartConjunction returns datamart::Expression:
+		//	DatamartConditionalExpression (({datamart::Conjunction.left=current} "and") right=DatamartConditionalExpression)*;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartConditionalExpression (({datamart::Conjunction.left=current} "and") right=DatamartConditionalExpression)*
+		public Group getGroup() { return cGroup; }
+
+		//DatamartConditionalExpression
+		public RuleCall getDatamartConditionalExpressionParserRuleCall_0() { return cDatamartConditionalExpressionParserRuleCall_0; }
+
+		//(({datamart::Conjunction.left=current} "and") right=DatamartConditionalExpression)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{datamart::Conjunction.left=current} "and"
+		public Group getGroup_1_0() { return cGroup_1_0; }
+
+		//{datamart::Conjunction.left=current}
+		public Action getConjunctionLeftAction_1_0_0() { return cConjunctionLeftAction_1_0_0; }
+
+		//"and"
+		public Keyword getAndKeyword_1_0_1() { return cAndKeyword_1_0_1; }
+
+		//right=DatamartConditionalExpression
+		public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+		//DatamartConditionalExpression
+		public RuleCall getRightDatamartConditionalExpressionParserRuleCall_1_1_0() { return cRightDatamartConditionalExpressionParserRuleCall_1_1_0; }
+	}
+
+	public class DatamartConditionalExpressionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartConditionalExpression");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cDatamartOperandParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
+		private final Action cConditionalExpressionLeftAction_1_0_0 = (Action)cGroup_1_0.eContents().get(0);
+		private final Assignment cOperatorAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
+		private final RuleCall cOperatorOperatorEnumEnumRuleCall_1_0_1_0 = (RuleCall)cOperatorAssignment_1_0_1.eContents().get(0);
+		private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cRightDatamartOperandParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+		
+		//DatamartConditionalExpression returns datamart::Expression:
+		//	DatamartOperand (({datamart::ConditionalExpression.left=current} operator=OperatorEnum) right=DatamartOperand)*;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartOperand (({datamart::ConditionalExpression.left=current} operator=OperatorEnum) right=DatamartOperand)*
+		public Group getGroup() { return cGroup; }
+
+		//DatamartOperand
+		public RuleCall getDatamartOperandParserRuleCall_0() { return cDatamartOperandParserRuleCall_0; }
+
+		//(({datamart::ConditionalExpression.left=current} operator=OperatorEnum) right=DatamartOperand)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{datamart::ConditionalExpression.left=current} operator=OperatorEnum
+		public Group getGroup_1_0() { return cGroup_1_0; }
+
+		//{datamart::ConditionalExpression.left=current}
+		public Action getConditionalExpressionLeftAction_1_0_0() { return cConditionalExpressionLeftAction_1_0_0; }
+
+		//operator=OperatorEnum
+		public Assignment getOperatorAssignment_1_0_1() { return cOperatorAssignment_1_0_1; }
+
+		//OperatorEnum
+		public RuleCall getOperatorOperatorEnumEnumRuleCall_1_0_1_0() { return cOperatorOperatorEnumEnumRuleCall_1_0_1_0; }
+
+		//right=DatamartOperand
+		public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+		//DatamartOperand
+		public RuleCall getRightDatamartOperandParserRuleCall_1_1_0() { return cRightDatamartOperandParserRuleCall_1_1_0; }
+	}
+
+	public class DatamartOperandElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartOperand");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDatamartValueParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cDatamartDisjunctionParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
+		
+		//DatamartOperand returns datamart::Expression:
+		//	DatamartValue | "(" DatamartDisjunction ")";
+		public ParserRule getRule() { return rule; }
+
+		//DatamartValue | "(" DatamartDisjunction ")"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DatamartValue
+		public RuleCall getDatamartValueParserRuleCall_0() { return cDatamartValueParserRuleCall_0; }
+
+		//"(" DatamartDisjunction ")"
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; }
+
+		//DatamartDisjunction
+		public RuleCall getDatamartDisjunctionParserRuleCall_1_1() { return cDatamartDisjunctionParserRuleCall_1_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_1_2() { return cRightParenthesisKeyword_1_2; }
+	}
+
+	public class DatamartValueElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartValue");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final Assignment cNumberValueAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+		private final RuleCall cNumberValueNumberParserRuleCall_0_0 = (RuleCall)cNumberValueAssignment_0.eContents().get(0);
+		private final Assignment cStringValueAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
+		private final RuleCall cStringValueSTRINGTerminalRuleCall_1_0 = (RuleCall)cStringValueAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cAlternatives.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Assignment cFilteredAssignment_2_0_0 = (Assignment)cGroup_2_0.eContents().get(0);
+		private final Keyword cFilteredFilteredKeyword_2_0_0_0 = (Keyword)cFilteredAssignment_2_0_0.eContents().get(0);
+		private final Assignment cOptionalAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
+		private final Keyword cOptionalOptionalKeyword_2_0_1_0 = (Keyword)cOptionalAssignment_2_0_1.eContents().get(0);
+		private final Assignment cSelectedAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+		private final Keyword cSelectedSelectedKeyword_2_1_0 = (Keyword)cSelectedAssignment_2_1.eContents().get(0);
+		private final RuleCall cDatamartPropertyParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cDatamartTaskFilterParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cDatamartColumnParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		
+		//DatamartValue returns datamart::Expression:
+		//	numberValue=Number | stringValue=STRING | (filtered?="filtered" optional?="optional"? | selected?="selected") |
+		//	DatamartProperty | DatamartTaskFilter | DatamartColumn;
+		public ParserRule getRule() { return rule; }
+
+		//numberValue=Number | stringValue=STRING | (filtered?="filtered" optional?="optional"? | selected?="selected") |
+		//DatamartProperty | DatamartTaskFilter | DatamartColumn
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//numberValue=Number
+		public Assignment getNumberValueAssignment_0() { return cNumberValueAssignment_0; }
+
+		//Number
+		public RuleCall getNumberValueNumberParserRuleCall_0_0() { return cNumberValueNumberParserRuleCall_0_0; }
+
+		//stringValue=STRING
+		public Assignment getStringValueAssignment_1() { return cStringValueAssignment_1; }
+
+		//STRING
+		public RuleCall getStringValueSTRINGTerminalRuleCall_1_0() { return cStringValueSTRINGTerminalRuleCall_1_0; }
+
+		//filtered?="filtered" optional?="optional"? | selected?="selected"
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//filtered?="filtered" optional?="optional"?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//filtered?="filtered"
+		public Assignment getFilteredAssignment_2_0_0() { return cFilteredAssignment_2_0_0; }
+
+		//"filtered"
+		public Keyword getFilteredFilteredKeyword_2_0_0_0() { return cFilteredFilteredKeyword_2_0_0_0; }
+
+		//optional?="optional"?
+		public Assignment getOptionalAssignment_2_0_1() { return cOptionalAssignment_2_0_1; }
+
+		//"optional"
+		public Keyword getOptionalOptionalKeyword_2_0_1_0() { return cOptionalOptionalKeyword_2_0_1_0; }
+
+		//selected?="selected"
+		public Assignment getSelectedAssignment_2_1() { return cSelectedAssignment_2_1; }
+
+		//"selected"
+		public Keyword getSelectedSelectedKeyword_2_1_0() { return cSelectedSelectedKeyword_2_1_0; }
+
+		//DatamartProperty
+		public RuleCall getDatamartPropertyParserRuleCall_3() { return cDatamartPropertyParserRuleCall_3; }
+
+		//DatamartTaskFilter
+		public RuleCall getDatamartTaskFilterParserRuleCall_4() { return cDatamartTaskFilterParserRuleCall_4; }
+
+		//DatamartColumn
+		public RuleCall getDatamartColumnParserRuleCall_5() { return cDatamartColumnParserRuleCall_5; }
+	}
+
+	public class DatamartCubeElementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartCubeElement");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDatamartAxisParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDatamartSlicerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDatamartDefineDerivedMeasureParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//DatamartCubeElement returns datamart::DatamartCubeElement:
+		//	DatamartAxis | DatamartSlicer | DatamartDefineDerivedMeasure;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartAxis | DatamartSlicer | DatamartDefineDerivedMeasure
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DatamartAxis
+		public RuleCall getDatamartAxisParserRuleCall_0() { return cDatamartAxisParserRuleCall_0; }
+
+		//DatamartSlicer
+		public RuleCall getDatamartSlicerParserRuleCall_1() { return cDatamartSlicerParserRuleCall_1; }
+
+		//DatamartDefineDerivedMeasure
+		public RuleCall getDatamartDefineDerivedMeasureParserRuleCall_2() { return cDatamartDefineDerivedMeasureParserRuleCall_2; }
+	}
+
+	public class DatamartDefineDerivedMeasureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartDefineDerivedMeasure");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDeriveKeyword_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 cFromKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDerivedElementAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDerivedElementDatamartAdditionParserRuleCall_3_0 = (RuleCall)cDerivedElementAssignment_3.eContents().get(0);
+		
+		//DatamartDefineDerivedMeasure returns datamart::DatamartDefineDerivedMeasure:
+		//	"derive" name=TRANSLATABLEID "from" derivedElement+=DatamartAddition*;
+		public ParserRule getRule() { return rule; }
+
+		//"derive" name=TRANSLATABLEID "from" derivedElement+=DatamartAddition*
+		public Group getGroup() { return cGroup; }
+
+		//"derive"
+		public Keyword getDeriveKeyword_0() { return cDeriveKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//"from"
+		public Keyword getFromKeyword_2() { return cFromKeyword_2; }
+
+		//derivedElement+=DatamartAddition*
+		public Assignment getDerivedElementAssignment_3() { return cDerivedElementAssignment_3; }
+
+		//DatamartAddition
+		public RuleCall getDerivedElementDatamartAdditionParserRuleCall_3_0() { return cDerivedElementDatamartAdditionParserRuleCall_3_0; }
+	}
+
+	public class DatamartAdditionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartAddition");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cDatamartMultiplicationParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
+		private final Group cGroup_1_0_0 = (Group)cAlternatives_1_0.eContents().get(0);
+		private final Action cAdditionLeftAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
+		private final Keyword cPlusSignKeyword_1_0_0_1 = (Keyword)cGroup_1_0_0.eContents().get(1);
+		private final Group cGroup_1_0_1 = (Group)cAlternatives_1_0.eContents().get(1);
+		private final Action cSubtractionLeftAction_1_0_1_0 = (Action)cGroup_1_0_1.eContents().get(0);
+		private final Keyword cHyphenMinusKeyword_1_0_1_1 = (Keyword)cGroup_1_0_1.eContents().get(1);
+		private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cRightDatamartMultiplicationParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+		
+		//DatamartAddition returns datamart::Expression:
+		//	DatamartMultiplication (({datamart::Addition.left=current} "+" | {datamart::Subtraction.left=current} "-")
+		//	right=DatamartMultiplication)*;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartMultiplication (({datamart::Addition.left=current} "+" | {datamart::Subtraction.left=current} "-")
+		//right=DatamartMultiplication)*
+		public Group getGroup() { return cGroup; }
+
+		//DatamartMultiplication
+		public RuleCall getDatamartMultiplicationParserRuleCall_0() { return cDatamartMultiplicationParserRuleCall_0; }
+
+		//(({datamart::Addition.left=current} "+" | {datamart::Subtraction.left=current} "-") right=DatamartMultiplication)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{datamart::Addition.left=current} "+" | {datamart::Subtraction.left=current} "-"
+		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
+
+		//{datamart::Addition.left=current} "+"
+		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
+
+		//{datamart::Addition.left=current}
+		public Action getAdditionLeftAction_1_0_0_0() { return cAdditionLeftAction_1_0_0_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_1_0_0_1() { return cPlusSignKeyword_1_0_0_1; }
+
+		//{datamart::Subtraction.left=current} "-"
+		public Group getGroup_1_0_1() { return cGroup_1_0_1; }
+
+		//{datamart::Subtraction.left=current}
+		public Action getSubtractionLeftAction_1_0_1_0() { return cSubtractionLeftAction_1_0_1_0; }
+
+		//"-"
+		public Keyword getHyphenMinusKeyword_1_0_1_1() { return cHyphenMinusKeyword_1_0_1_1; }
+
+		//right=DatamartMultiplication
+		public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+		//DatamartMultiplication
+		public RuleCall getRightDatamartMultiplicationParserRuleCall_1_1_0() { return cRightDatamartMultiplicationParserRuleCall_1_1_0; }
+	}
+
+	public class DatamartMultiplicationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartMultiplication");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cDatamartPrimaryParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
+		private final Group cGroup_1_0_0 = (Group)cAlternatives_1_0.eContents().get(0);
+		private final Action cMultiplicationLeftAction_1_0_0_0 = (Action)cGroup_1_0_0.eContents().get(0);
+		private final Keyword cAsteriskKeyword_1_0_0_1 = (Keyword)cGroup_1_0_0.eContents().get(1);
+		private final Group cGroup_1_0_1 = (Group)cAlternatives_1_0.eContents().get(1);
+		private final Action cDivisionLeftAction_1_0_1_0 = (Action)cGroup_1_0_1.eContents().get(0);
+		private final Keyword cSolidusKeyword_1_0_1_1 = (Keyword)cGroup_1_0_1.eContents().get(1);
+		private final Assignment cRightAssignment_1_1 = (Assignment)cGroup_1.eContents().get(1);
+		private final RuleCall cRightDatamartPrimaryParserRuleCall_1_1_0 = (RuleCall)cRightAssignment_1_1.eContents().get(0);
+		
+		//DatamartMultiplication returns datamart::Expression:
+		//	DatamartPrimary (({datamart::Multiplication.left=current} "*" | {datamart::Division.left=current} "/")
+		//	right=DatamartPrimary)*;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartPrimary (({datamart::Multiplication.left=current} "*" | {datamart::Division.left=current} "/")
+		//right=DatamartPrimary)*
+		public Group getGroup() { return cGroup; }
+
+		//DatamartPrimary
+		public RuleCall getDatamartPrimaryParserRuleCall_0() { return cDatamartPrimaryParserRuleCall_0; }
+
+		//(({datamart::Multiplication.left=current} "*" | {datamart::Division.left=current} "/") right=DatamartPrimary)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{datamart::Multiplication.left=current} "*" | {datamart::Division.left=current} "/"
+		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
+
+		//{datamart::Multiplication.left=current} "*"
+		public Group getGroup_1_0_0() { return cGroup_1_0_0; }
+
+		//{datamart::Multiplication.left=current}
+		public Action getMultiplicationLeftAction_1_0_0_0() { return cMultiplicationLeftAction_1_0_0_0; }
+
+		//"*"
+		public Keyword getAsteriskKeyword_1_0_0_1() { return cAsteriskKeyword_1_0_0_1; }
+
+		//{datamart::Division.left=current} "/"
+		public Group getGroup_1_0_1() { return cGroup_1_0_1; }
+
+		//{datamart::Division.left=current}
+		public Action getDivisionLeftAction_1_0_1_0() { return cDivisionLeftAction_1_0_1_0; }
+
+		//"/"
+		public Keyword getSolidusKeyword_1_0_1_1() { return cSolidusKeyword_1_0_1_1; }
+
+		//right=DatamartPrimary
+		public Assignment getRightAssignment_1_1() { return cRightAssignment_1_1; }
+
+		//DatamartPrimary
+		public RuleCall getRightDatamartPrimaryParserRuleCall_1_1_0() { return cRightDatamartPrimaryParserRuleCall_1_1_0; }
+	}
+
+	public class DatamartPrimaryElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartPrimary");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDatamartNumberOrElementParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final Group cGroup_1 = (Group)cAlternatives.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cDatamartAdditionParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_1_2 = (Keyword)cGroup_1.eContents().get(2);
+		
+		//DatamartPrimary returns datamart::Expression:
+		//	DatamartNumberOrElement | "(" DatamartAddition ")";
+		public ParserRule getRule() { return rule; }
+
+		//DatamartNumberOrElement | "(" DatamartAddition ")"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DatamartNumberOrElement
+		public RuleCall getDatamartNumberOrElementParserRuleCall_0() { return cDatamartNumberOrElementParserRuleCall_0; }
+
+		//"(" DatamartAddition ")"
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1_0() { return cLeftParenthesisKeyword_1_0; }
+
+		//DatamartAddition
+		public RuleCall getDatamartAdditionParserRuleCall_1_1() { return cDatamartAdditionParserRuleCall_1_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_1_2() { return cRightParenthesisKeyword_1_2; }
+	}
+
+	public class DatamartNumberOrElementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartNumberOrElement");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final Assignment cValueAssignment_0 = (Assignment)cAlternatives.eContents().get(0);
+		private final RuleCall cValueNumberParserRuleCall_0_0 = (RuleCall)cValueAssignment_0.eContents().get(0);
+		private final RuleCall cDatamartMeasureParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDatamartDerivedMeasureParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cDatamartMemberTupleParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cDatamartAggregationParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		
+		//DatamartNumberOrElement returns datamart::Expression:
+		//	value=Number | DatamartMeasure | DatamartDerivedMeasure | DatamartMemberTuple | DatamartAggregation;
+		public ParserRule getRule() { return rule; }
+
+		//value=Number | DatamartMeasure | DatamartDerivedMeasure | DatamartMemberTuple | DatamartAggregation
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//value=Number
+		public Assignment getValueAssignment_0() { return cValueAssignment_0; }
+
+		//Number
+		public RuleCall getValueNumberParserRuleCall_0_0() { return cValueNumberParserRuleCall_0_0; }
+
+		//DatamartMeasure
+		public RuleCall getDatamartMeasureParserRuleCall_1() { return cDatamartMeasureParserRuleCall_1; }
+
+		//DatamartDerivedMeasure
+		public RuleCall getDatamartDerivedMeasureParserRuleCall_2() { return cDatamartDerivedMeasureParserRuleCall_2; }
+
+		//DatamartMemberTuple
+		public RuleCall getDatamartMemberTupleParserRuleCall_3() { return cDatamartMemberTupleParserRuleCall_3; }
+
+		//DatamartAggregation
+		public RuleCall getDatamartAggregationParserRuleCall_4() { return cDatamartAggregationParserRuleCall_4; }
+	}
+
+	public class DatamartMemberTupleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartMemberTuple");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
+		private final Alternatives cAlternatives_0_0 = (Alternatives)cGroup_0.eContents().get(0);
+		private final Assignment cFunctionAssignment_0_0_0 = (Assignment)cAlternatives_0_0.eContents().get(0);
+		private final RuleCall cFunctionDatamartFunctionParserRuleCall_0_0_0_0 = (RuleCall)cFunctionAssignment_0_0_0.eContents().get(0);
+		private final Assignment cFunctionAssignment_0_0_1 = (Assignment)cAlternatives_0_0.eContents().get(1);
+		private final RuleCall cFunctionDatamartParameterFunctionParserRuleCall_0_0_1_0 = (RuleCall)cFunctionAssignment_0_0_1.eContents().get(0);
+		private final Keyword cOfKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
+		private final Assignment cHierarchyAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cHierarchyDatamartHierarchyParserRuleCall_1_0 = (RuleCall)cHierarchyAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Action cDatamartMemberTupleLeftAction_2_0 = (Action)cGroup_2.eContents().get(0);
+		private final Keyword cOverKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
+		private final Assignment cRightAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cRightDatamartMeasureParserRuleCall_2_2_0 = (RuleCall)cRightAssignment_2_2.eContents().get(0);
+		
+		//DatamartMemberTuple returns datamart::Expression:
+		//	((function=DatamartFunction | function=DatamartParameterFunction) "of")? hierarchy=DatamartHierarchy
+		//	({datamart::DatamartMemberTuple.left=current} "over" right=DatamartMeasure);
+		public ParserRule getRule() { return rule; }
+
+		//((function=DatamartFunction | function=DatamartParameterFunction) "of")? hierarchy=DatamartHierarchy
+		//({datamart::DatamartMemberTuple.left=current} "over" right=DatamartMeasure)
+		public Group getGroup() { return cGroup; }
+
+		//((function=DatamartFunction | function=DatamartParameterFunction) "of")?
+		public Group getGroup_0() { return cGroup_0; }
+
+		//function=DatamartFunction | function=DatamartParameterFunction
+		public Alternatives getAlternatives_0_0() { return cAlternatives_0_0; }
+
+		//function=DatamartFunction
+		public Assignment getFunctionAssignment_0_0_0() { return cFunctionAssignment_0_0_0; }
+
+		//DatamartFunction
+		public RuleCall getFunctionDatamartFunctionParserRuleCall_0_0_0_0() { return cFunctionDatamartFunctionParserRuleCall_0_0_0_0; }
+
+		//function=DatamartParameterFunction
+		public Assignment getFunctionAssignment_0_0_1() { return cFunctionAssignment_0_0_1; }
+
+		//DatamartParameterFunction
+		public RuleCall getFunctionDatamartParameterFunctionParserRuleCall_0_0_1_0() { return cFunctionDatamartParameterFunctionParserRuleCall_0_0_1_0; }
+
+		//"of"
+		public Keyword getOfKeyword_0_1() { return cOfKeyword_0_1; }
+
+		//hierarchy=DatamartHierarchy
+		public Assignment getHierarchyAssignment_1() { return cHierarchyAssignment_1; }
+
+		//DatamartHierarchy
+		public RuleCall getHierarchyDatamartHierarchyParserRuleCall_1_0() { return cHierarchyDatamartHierarchyParserRuleCall_1_0; }
+
+		//{datamart::DatamartMemberTuple.left=current} "over" right=DatamartMeasure
+		public Group getGroup_2() { return cGroup_2; }
+
+		//{datamart::DatamartMemberTuple.left=current}
+		public Action getDatamartMemberTupleLeftAction_2_0() { return cDatamartMemberTupleLeftAction_2_0; }
+
+		//"over"
+		public Keyword getOverKeyword_2_1() { return cOverKeyword_2_1; }
+
+		//right=DatamartMeasure
+		public Assignment getRightAssignment_2_2() { return cRightAssignment_2_2; }
+
+		//DatamartMeasure
+		public RuleCall getRightDatamartMeasureParserRuleCall_2_2_0() { return cRightDatamartMeasureParserRuleCall_2_2_0; }
+	}
+
+	public class DatamartFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartFunction");
+		private final Assignment cFunctionAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cFunctionFunctionEnumEnumRuleCall_0 = (RuleCall)cFunctionAssignment.eContents().get(0);
+		
+		//DatamartFunction returns datamart::DatamartFunction:
+		//	function=FunctionEnum;
+		public ParserRule getRule() { return rule; }
+
+		//function=FunctionEnum
+		public Assignment getFunctionAssignment() { return cFunctionAssignment; }
+
+		//FunctionEnum
+		public RuleCall getFunctionFunctionEnumEnumRuleCall_0() { return cFunctionFunctionEnumEnumRuleCall_0; }
+	}
+
+	public class DatamartParameterFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartParameterFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cFunctionAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cFunctionParameterFunctionEnumEnumRuleCall_0_0 = (RuleCall)cFunctionAssignment_0.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cParameterAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cParameterDatamartFunctionIntParameterParserRuleCall_2_0 = (RuleCall)cParameterAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//DatamartParameterFunction returns datamart::DatamartParameterFunction:
+		//	function=ParameterFunctionEnum "(" parameter=DatamartFunctionIntParameter ")";
+		public ParserRule getRule() { return rule; }
+
+		//function=ParameterFunctionEnum "(" parameter=DatamartFunctionIntParameter ")"
+		public Group getGroup() { return cGroup; }
+
+		//function=ParameterFunctionEnum
+		public Assignment getFunctionAssignment_0() { return cFunctionAssignment_0; }
+
+		//ParameterFunctionEnum
+		public RuleCall getFunctionParameterFunctionEnumEnumRuleCall_0_0() { return cFunctionParameterFunctionEnumEnumRuleCall_0_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//parameter=DatamartFunctionIntParameter
+		public Assignment getParameterAssignment_2() { return cParameterAssignment_2; }
+
+		//DatamartFunctionIntParameter
+		public RuleCall getParameterDatamartFunctionIntParameterParserRuleCall_2_0() { return cParameterDatamartFunctionIntParameterParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class DatamartFunctionIntParameterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartFunctionIntParameter");
+		private final Assignment cValueAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cValueINTTerminalRuleCall_0 = (RuleCall)cValueAssignment.eContents().get(0);
+		
+		//DatamartFunctionIntParameter returns datamart::DatamartFunctionIntParameter:
+		//	value=INT;
+		public ParserRule getRule() { return rule; }
+
+		//value=INT
+		public Assignment getValueAssignment() { return cValueAssignment; }
+
+		//INT
+		public RuleCall getValueINTTerminalRuleCall_0() { return cValueINTTerminalRuleCall_0; }
+	}
+
+	public class DatamartSetFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSetFunction");
+		private final Assignment cSetFunctionAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cSetFunctionSetFunctionEnumEnumRuleCall_0 = (RuleCall)cSetFunctionAssignment.eContents().get(0);
+		
+		//DatamartSetFunction returns datamart::DatamartSetFunction:
+		//	setFunction=SetFunctionEnum;
+		public ParserRule getRule() { return rule; }
+
+		//setFunction=SetFunctionEnum
+		public Assignment getSetFunctionAssignment() { return cSetFunctionAssignment; }
+
+		//SetFunctionEnum
+		public RuleCall getSetFunctionSetFunctionEnumEnumRuleCall_0() { return cSetFunctionSetFunctionEnumEnumRuleCall_0; }
+	}
+
+	public class DatamartSetParameterFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSetParameterFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cSetFunctionAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cSetFunctionSetParameterFunctionEnumEnumRuleCall_0_0 = (RuleCall)cSetFunctionAssignment_0.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cParameterAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cParameterDatamartFunctionIntParameterParserRuleCall_2_0 = (RuleCall)cParameterAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//DatamartSetParameterFunction returns datamart::DatamartSetParameterFunction:
+		//	setFunction=SetParameterFunctionEnum "(" parameter=DatamartFunctionIntParameter ")";
+		public ParserRule getRule() { return rule; }
+
+		//setFunction=SetParameterFunctionEnum "(" parameter=DatamartFunctionIntParameter ")"
+		public Group getGroup() { return cGroup; }
+
+		//setFunction=SetParameterFunctionEnum
+		public Assignment getSetFunctionAssignment_0() { return cSetFunctionAssignment_0; }
+
+		//SetParameterFunctionEnum
+		public RuleCall getSetFunctionSetParameterFunctionEnumEnumRuleCall_0_0() { return cSetFunctionSetParameterFunctionEnumEnumRuleCall_0_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//parameter=DatamartFunctionIntParameter
+		public Assignment getParameterAssignment_2() { return cParameterAssignment_2; }
+
+		//DatamartFunctionIntParameter
+		public RuleCall getParameterDatamartFunctionIntParameterParserRuleCall_2_0() { return cParameterDatamartFunctionIntParameterParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class DatamartSetAggregationFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSetAggregationFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cAggregationAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cAggregationSetAggregationEnumEnumRuleCall_0_0 = (RuleCall)cAggregationAssignment_0.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cParameterAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cParameterDatamartFunctionIntParameterParserRuleCall_2_0 = (RuleCall)cParameterAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//DatamartSetAggregationFunction returns datamart::DatamartSetAggregationFunction:
+		//	aggregation=SetAggregationEnum "(" parameter=DatamartFunctionIntParameter ")";
+		public ParserRule getRule() { return rule; }
+
+		//aggregation=SetAggregationEnum "(" parameter=DatamartFunctionIntParameter ")"
+		public Group getGroup() { return cGroup; }
+
+		//aggregation=SetAggregationEnum
+		public Assignment getAggregationAssignment_0() { return cAggregationAssignment_0; }
+
+		//SetAggregationEnum
+		public RuleCall getAggregationSetAggregationEnumEnumRuleCall_0_0() { return cAggregationSetAggregationEnumEnumRuleCall_0_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//parameter=DatamartFunctionIntParameter
+		public Assignment getParameterAssignment_2() { return cParameterAssignment_2; }
+
+		//DatamartFunctionIntParameter
+		public RuleCall getParameterDatamartFunctionIntParameterParserRuleCall_2_0() { return cParameterDatamartFunctionIntParameterParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class DatamartSetTupleElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSetTuple");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
+		private final Assignment cSetFunctionAssignment_0_0 = (Assignment)cAlternatives_0.eContents().get(0);
+		private final RuleCall cSetFunctionDatamartSetFunctionParserRuleCall_0_0_0 = (RuleCall)cSetFunctionAssignment_0_0.eContents().get(0);
+		private final Assignment cSetFunctionAssignment_0_1 = (Assignment)cAlternatives_0.eContents().get(1);
+		private final RuleCall cSetFunctionDatamartSetParameterFunctionParserRuleCall_0_1_0 = (RuleCall)cSetFunctionAssignment_0_1.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Action cDatamartSetTupleLeftAction_1_0 = (Action)cGroup_1.eContents().get(0);
+		private final Keyword cOfKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Assignment cRightAssignment_1_2 = (Assignment)cGroup_1.eContents().get(2);
+		private final RuleCall cRightDatamartHierarchyParserRuleCall_1_2_0 = (RuleCall)cRightAssignment_1_2.eContents().get(0);
+		
+		//DatamartSetTuple returns datamart::Expression:
+		//	(setFunction=DatamartSetFunction | setFunction=DatamartSetParameterFunction)
+		//	({datamart::DatamartSetTuple.left=current} "of" right=DatamartHierarchy);
+		public ParserRule getRule() { return rule; }
+
+		//(setFunction=DatamartSetFunction | setFunction=DatamartSetParameterFunction) ({datamart::DatamartSetTuple.left=current}
+		//"of" right=DatamartHierarchy)
+		public Group getGroup() { return cGroup; }
+
+		//setFunction=DatamartSetFunction | setFunction=DatamartSetParameterFunction
+		public Alternatives getAlternatives_0() { return cAlternatives_0; }
+
+		//setFunction=DatamartSetFunction
+		public Assignment getSetFunctionAssignment_0_0() { return cSetFunctionAssignment_0_0; }
+
+		//DatamartSetFunction
+		public RuleCall getSetFunctionDatamartSetFunctionParserRuleCall_0_0_0() { return cSetFunctionDatamartSetFunctionParserRuleCall_0_0_0; }
+
+		//setFunction=DatamartSetParameterFunction
+		public Assignment getSetFunctionAssignment_0_1() { return cSetFunctionAssignment_0_1; }
+
+		//DatamartSetParameterFunction
+		public RuleCall getSetFunctionDatamartSetParameterFunctionParserRuleCall_0_1_0() { return cSetFunctionDatamartSetParameterFunctionParserRuleCall_0_1_0; }
+
+		//{datamart::DatamartSetTuple.left=current} "of" right=DatamartHierarchy
+		public Group getGroup_1() { return cGroup_1; }
+
+		//{datamart::DatamartSetTuple.left=current}
+		public Action getDatamartSetTupleLeftAction_1_0() { return cDatamartSetTupleLeftAction_1_0; }
+
+		//"of"
+		public Keyword getOfKeyword_1_1() { return cOfKeyword_1_1; }
+
+		//right=DatamartHierarchy
+		public Assignment getRightAssignment_1_2() { return cRightAssignment_1_2; }
+
+		//DatamartHierarchy
+		public RuleCall getRightDatamartHierarchyParserRuleCall_1_2_0() { return cRightDatamartHierarchyParserRuleCall_1_2_0; }
+	}
+
+	public class DatamartAggregationFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartAggregationFunction");
+		private final Assignment cAggregationAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cAggregationAggregationEnumEnumRuleCall_0 = (RuleCall)cAggregationAssignment.eContents().get(0);
+		
+		//DatamartAggregationFunction returns datamart::DatamartAggregationFunction:
+		//	aggregation=AggregationEnum;
+		public ParserRule getRule() { return rule; }
+
+		//aggregation=AggregationEnum
+		public Assignment getAggregationAssignment() { return cAggregationAssignment; }
+
+		//AggregationEnum
+		public RuleCall getAggregationAggregationEnumEnumRuleCall_0() { return cAggregationAggregationEnumEnumRuleCall_0; }
+	}
+
+	public class DatamartAggregationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartAggregation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cAggregationAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cAggregationDatamartAggregationFunctionParserRuleCall_0_0 = (RuleCall)cAggregationAssignment_0.eContents().get(0);
+		private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Assignment cSetAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+		private final RuleCall cSetDatamartSetTupleParserRuleCall_2_0_0 = (RuleCall)cSetAssignment_2_0.eContents().get(0);
+		private final Assignment cSetAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+		private final RuleCall cSetDatamartHierarchyParserRuleCall_2_1_0 = (RuleCall)cSetAssignment_2_1.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Action cDatamartAggregationLeftAction_3_0 = (Action)cGroup_3.eContents().get(0);
+		private final Keyword cOverKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cRightAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cRightDatamartMeasureParserRuleCall_3_2_0 = (RuleCall)cRightAssignment_3_2.eContents().get(0);
+		
+		//DatamartAggregation returns datamart::Expression:
+		//	aggregation=DatamartAggregationFunction "of" (set=DatamartSetTuple | set=DatamartHierarchy)
+		//	({datamart::DatamartAggregation.left=current} "over" right=DatamartMeasure);
+		public ParserRule getRule() { return rule; }
+
+		//aggregation=DatamartAggregationFunction "of" (set=DatamartSetTuple | set=DatamartHierarchy)
+		//({datamart::DatamartAggregation.left=current} "over" right=DatamartMeasure)
+		public Group getGroup() { return cGroup; }
+
+		//aggregation=DatamartAggregationFunction
+		public Assignment getAggregationAssignment_0() { return cAggregationAssignment_0; }
+
+		//DatamartAggregationFunction
+		public RuleCall getAggregationDatamartAggregationFunctionParserRuleCall_0_0() { return cAggregationDatamartAggregationFunctionParserRuleCall_0_0; }
+
+		//"of"
+		public Keyword getOfKeyword_1() { return cOfKeyword_1; }
+
+		//set=DatamartSetTuple | set=DatamartHierarchy
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//set=DatamartSetTuple
+		public Assignment getSetAssignment_2_0() { return cSetAssignment_2_0; }
+
+		//DatamartSetTuple
+		public RuleCall getSetDatamartSetTupleParserRuleCall_2_0_0() { return cSetDatamartSetTupleParserRuleCall_2_0_0; }
+
+		//set=DatamartHierarchy
+		public Assignment getSetAssignment_2_1() { return cSetAssignment_2_1; }
+
+		//DatamartHierarchy
+		public RuleCall getSetDatamartHierarchyParserRuleCall_2_1_0() { return cSetDatamartHierarchyParserRuleCall_2_1_0; }
+
+		//{datamart::DatamartAggregation.left=current} "over" right=DatamartMeasure
+		public Group getGroup_3() { return cGroup_3; }
+
+		//{datamart::DatamartAggregation.left=current}
+		public Action getDatamartAggregationLeftAction_3_0() { return cDatamartAggregationLeftAction_3_0; }
+
+		//"over"
+		public Keyword getOverKeyword_3_1() { return cOverKeyword_3_1; }
+
+		//right=DatamartMeasure
+		public Assignment getRightAssignment_3_2() { return cRightAssignment_3_2; }
+
+		//DatamartMeasure
+		public RuleCall getRightDatamartMeasureParserRuleCall_3_2_0() { return cRightDatamartMeasureParserRuleCall_3_2_0; }
+	}
+
+	public class DatamartSetAggregationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSetAggregation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cAggregationAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cAggregationDatamartSetAggregationFunctionParserRuleCall_0_0 = (RuleCall)cAggregationAssignment_0.eContents().get(0);
+		private final Keyword cOfKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Assignment cSetAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+		private final RuleCall cSetDatamartSetTupleParserRuleCall_2_0_0 = (RuleCall)cSetAssignment_2_0.eContents().get(0);
+		private final Assignment cSetAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+		private final RuleCall cSetDatamartHierarchyParserRuleCall_2_1_0 = (RuleCall)cSetAssignment_2_1.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Action cDatamartSetAggregationLeftAction_3_0 = (Action)cGroup_3.eContents().get(0);
+		private final Keyword cOverKeyword_3_1 = (Keyword)cGroup_3.eContents().get(1);
+		private final Assignment cRightAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cRightDatamartMeasureParserRuleCall_3_2_0 = (RuleCall)cRightAssignment_3_2.eContents().get(0);
+		
+		//DatamartSetAggregation returns datamart::Expression:
+		//	aggregation=DatamartSetAggregationFunction "of" (set=DatamartSetTuple | set=DatamartHierarchy)
+		//	({datamart::DatamartSetAggregation.left=current} "over" right=DatamartMeasure);
+		public ParserRule getRule() { return rule; }
+
+		//aggregation=DatamartSetAggregationFunction "of" (set=DatamartSetTuple | set=DatamartHierarchy)
+		//({datamart::DatamartSetAggregation.left=current} "over" right=DatamartMeasure)
+		public Group getGroup() { return cGroup; }
+
+		//aggregation=DatamartSetAggregationFunction
+		public Assignment getAggregationAssignment_0() { return cAggregationAssignment_0; }
+
+		//DatamartSetAggregationFunction
+		public RuleCall getAggregationDatamartSetAggregationFunctionParserRuleCall_0_0() { return cAggregationDatamartSetAggregationFunctionParserRuleCall_0_0; }
+
+		//"of"
+		public Keyword getOfKeyword_1() { return cOfKeyword_1; }
+
+		//set=DatamartSetTuple | set=DatamartHierarchy
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//set=DatamartSetTuple
+		public Assignment getSetAssignment_2_0() { return cSetAssignment_2_0; }
+
+		//DatamartSetTuple
+		public RuleCall getSetDatamartSetTupleParserRuleCall_2_0_0() { return cSetDatamartSetTupleParserRuleCall_2_0_0; }
+
+		//set=DatamartHierarchy
+		public Assignment getSetAssignment_2_1() { return cSetAssignment_2_1; }
+
+		//DatamartHierarchy
+		public RuleCall getSetDatamartHierarchyParserRuleCall_2_1_0() { return cSetDatamartHierarchyParserRuleCall_2_1_0; }
+
+		//{datamart::DatamartSetAggregation.left=current} "over" right=DatamartMeasure
+		public Group getGroup_3() { return cGroup_3; }
+
+		//{datamart::DatamartSetAggregation.left=current}
+		public Action getDatamartSetAggregationLeftAction_3_0() { return cDatamartSetAggregationLeftAction_3_0; }
+
+		//"over"
+		public Keyword getOverKeyword_3_1() { return cOverKeyword_3_1; }
+
+		//right=DatamartMeasure
+		public Assignment getRightAssignment_3_2() { return cRightAssignment_3_2; }
+
+		//DatamartMeasure
+		public RuleCall getRightDatamartMeasureParserRuleCall_3_2_0() { return cRightDatamartMeasureParserRuleCall_3_2_0; }
+	}
+
+	public class DatamartSlicerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartSlicer");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSlicerKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cElementAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cElementDatamartElementParserRuleCall_1_0 = (RuleCall)cElementAssignment_1.eContents().get(0);
+		
+		//DatamartSlicer returns datamart::DatamartSlicer:
+		//	"slicer" element=DatamartElement;
+		public ParserRule getRule() { return rule; }
+
+		//"slicer" element=DatamartElement
+		public Group getGroup() { return cGroup; }
+
+		//"slicer"
+		public Keyword getSlicerKeyword_0() { return cSlicerKeyword_0; }
+
+		//element=DatamartElement
+		public Assignment getElementAssignment_1() { return cElementAssignment_1; }
+
+		//DatamartElement
+		public RuleCall getElementDatamartElementParserRuleCall_1_0() { return cElementDatamartElementParserRuleCall_1_0; }
+	}
+
+	public class DatamartAxisElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartAxis");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cAxisKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameAxisEnumEnumRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cElementsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cElementsDatamartElementParserRuleCall_3_0 = (RuleCall)cElementsAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//DatamartAxis returns datamart::DatamartAxis:
+		//	"axis" name=AxisEnum "{" elements+=DatamartElement* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"axis" name=AxisEnum "{" elements+=DatamartElement* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"axis"
+		public Keyword getAxisKeyword_0() { return cAxisKeyword_0; }
+
+		//name=AxisEnum
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//AxisEnum
+		public RuleCall getNameAxisEnumEnumRuleCall_1_0() { return cNameAxisEnumEnumRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//elements+=DatamartElement*
+		public Assignment getElementsAssignment_3() { return cElementsAssignment_3; }
+
+		//DatamartElement
+		public RuleCall getElementsDatamartElementParserRuleCall_3_0() { return cElementsDatamartElementParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class DatamartElementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartElement");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDatamartHierarchyParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDatamartMeasureParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDatamartDerivedMeasureParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cDatamartSetAggregationParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//DatamartElement returns datamart::DatamartElement:
+		//	DatamartHierarchy | DatamartMeasure | DatamartDerivedMeasure | DatamartSetAggregation;
+		public ParserRule getRule() { return rule; }
+
+		//DatamartHierarchy | DatamartMeasure | DatamartDerivedMeasure | DatamartSetAggregation
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DatamartHierarchy
+		public RuleCall getDatamartHierarchyParserRuleCall_0() { return cDatamartHierarchyParserRuleCall_0; }
+
+		//DatamartMeasure
+		public RuleCall getDatamartMeasureParserRuleCall_1() { return cDatamartMeasureParserRuleCall_1; }
+
+		//DatamartDerivedMeasure
+		public RuleCall getDatamartDerivedMeasureParserRuleCall_2() { return cDatamartDerivedMeasureParserRuleCall_2; }
+
+		//DatamartSetAggregation
+		public RuleCall getDatamartSetAggregationParserRuleCall_3() { return cDatamartSetAggregationParserRuleCall_3; }
+	}
+
+	public class DatamartDerivedMeasureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartDerivedMeasure");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDerivedKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDerivedRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cDerivedRefDatamartDefineDerivedMeasureCrossReference_1_0 = (CrossReference)cDerivedRefAssignment_1.eContents().get(0);
+		private final RuleCall cDerivedRefDatamartDefineDerivedMeasureIDTerminalRuleCall_1_0_1 = (RuleCall)cDerivedRefDatamartDefineDerivedMeasureCrossReference_1_0.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cScaledAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cScaledScaleKeyword_2_0_0 = (Keyword)cScaledAssignment_2_0.eContents().get(0);
+		private final Assignment cScaleAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cScaleValueScaleEnumEnumRuleCall_2_1_0 = (RuleCall)cScaleAssignment_2_1.eContents().get(0);
+		
+		//DatamartDerivedMeasure returns datamart::DatamartDerivedMeasure:
+		//	"derived" derivedRef=[datamart::DatamartDefineDerivedMeasure] (scaled?="scale" scale=ValueScaleEnum)?;
+		public ParserRule getRule() { return rule; }
+
+		//"derived" derivedRef=[datamart::DatamartDefineDerivedMeasure] (scaled?="scale" scale=ValueScaleEnum)?
+		public Group getGroup() { return cGroup; }
+
+		//"derived"
+		public Keyword getDerivedKeyword_0() { return cDerivedKeyword_0; }
+
+		//derivedRef=[datamart::DatamartDefineDerivedMeasure]
+		public Assignment getDerivedRefAssignment_1() { return cDerivedRefAssignment_1; }
+
+		//[datamart::DatamartDefineDerivedMeasure]
+		public CrossReference getDerivedRefDatamartDefineDerivedMeasureCrossReference_1_0() { return cDerivedRefDatamartDefineDerivedMeasureCrossReference_1_0; }
+
+		//ID
+		public RuleCall getDerivedRefDatamartDefineDerivedMeasureIDTerminalRuleCall_1_0_1() { return cDerivedRefDatamartDefineDerivedMeasureIDTerminalRuleCall_1_0_1; }
+
+		//(scaled?="scale" scale=ValueScaleEnum)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//scaled?="scale"
+		public Assignment getScaledAssignment_2_0() { return cScaledAssignment_2_0; }
+
+		//"scale"
+		public Keyword getScaledScaleKeyword_2_0_0() { return cScaledScaleKeyword_2_0_0; }
+
+		//scale=ValueScaleEnum
+		public Assignment getScaleAssignment_2_1() { return cScaleAssignment_2_1; }
+
+		//ValueScaleEnum
+		public RuleCall getScaleValueScaleEnumEnumRuleCall_2_1_0() { return cScaleValueScaleEnumEnumRuleCall_2_1_0; }
+	}
+
+	public class DatamartMeasureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartMeasure");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMeasureKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cMeasureRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cMeasureRefCubeMeasureCrossReference_1_0 = (CrossReference)cMeasureRefAssignment_1.eContents().get(0);
+		private final RuleCall cMeasureRefCubeMeasureIDTerminalRuleCall_1_0_1 = (RuleCall)cMeasureRefCubeMeasureCrossReference_1_0.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cScaledAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cScaledScaleKeyword_2_0_0 = (Keyword)cScaledAssignment_2_0.eContents().get(0);
+		private final Assignment cScaleAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cScaleValueScaleEnumEnumRuleCall_2_1_0 = (RuleCall)cScaleAssignment_2_1.eContents().get(0);
+		
+		//DatamartMeasure returns datamart::DatamartMeasure:
+		//	"measure" measureRef=[cube::CubeMeasure] (scaled?="scale" scale=ValueScaleEnum)?;
+		public ParserRule getRule() { return rule; }
+
+		//"measure" measureRef=[cube::CubeMeasure] (scaled?="scale" scale=ValueScaleEnum)?
+		public Group getGroup() { return cGroup; }
+
+		//"measure"
+		public Keyword getMeasureKeyword_0() { return cMeasureKeyword_0; }
+
+		//measureRef=[cube::CubeMeasure]
+		public Assignment getMeasureRefAssignment_1() { return cMeasureRefAssignment_1; }
+
+		//[cube::CubeMeasure]
+		public CrossReference getMeasureRefCubeMeasureCrossReference_1_0() { return cMeasureRefCubeMeasureCrossReference_1_0; }
+
+		//ID
+		public RuleCall getMeasureRefCubeMeasureIDTerminalRuleCall_1_0_1() { return cMeasureRefCubeMeasureIDTerminalRuleCall_1_0_1; }
+
+		//(scaled?="scale" scale=ValueScaleEnum)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//scaled?="scale"
+		public Assignment getScaledAssignment_2_0() { return cScaledAssignment_2_0; }
+
+		//"scale"
+		public Keyword getScaledScaleKeyword_2_0_0() { return cScaledScaleKeyword_2_0_0; }
+
+		//scale=ValueScaleEnum
+		public Assignment getScaleAssignment_2_1() { return cScaleAssignment_2_1; }
+
+		//ValueScaleEnum
+		public RuleCall getScaleValueScaleEnumEnumRuleCall_2_1_0() { return cScaleValueScaleEnumEnumRuleCall_2_1_0; }
+	}
+
+	public class DatamartHierarchyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartHierarchy");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHierarchyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cHierarchyRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cHierarchyRefCubeHierarchyCrossReference_1_0 = (CrossReference)cHierarchyRefAssignment_1.eContents().get(0);
+		private final RuleCall cHierarchyRefCubeHierarchyIDTerminalRuleCall_1_0_1 = (RuleCall)cHierarchyRefCubeHierarchyCrossReference_1_0.eContents().get(1);
+		private final Assignment cDefaultMemberAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cDefaultMemberDefaultKeyword_2_0 = (Keyword)cDefaultMemberAssignment_2.eContents().get(0);
+		private final Assignment cAllMemberAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final Keyword cAllMemberCondensedKeyword_3_0 = (Keyword)cAllMemberAssignment_3.eContents().get(0);
+		private final Assignment cAllLevelsAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final Keyword cAllLevelsExplodedKeyword_4_0 = (Keyword)cAllLevelsAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cLevelKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cLevelRefAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final CrossReference cLevelRefCubeLevelCrossReference_5_1_0 = (CrossReference)cLevelRefAssignment_5_1.eContents().get(0);
+		private final RuleCall cLevelRefCubeLevelIDTerminalRuleCall_5_1_0_1 = (RuleCall)cLevelRefCubeLevelCrossReference_5_1_0.eContents().get(1);
+		private final Alternatives cAlternatives_5_2 = (Alternatives)cGroup_5.eContents().get(2);
+		private final Assignment cFilteredAssignment_5_2_0 = (Assignment)cAlternatives_5_2.eContents().get(0);
+		private final Keyword cFilteredFilteredKeyword_5_2_0_0 = (Keyword)cFilteredAssignment_5_2_0.eContents().get(0);
+		private final Assignment cSelectedAssignment_5_2_1 = (Assignment)cAlternatives_5_2.eContents().get(1);
+		private final Keyword cSelectedSelectedKeyword_5_2_1_0 = (Keyword)cSelectedAssignment_5_2_1.eContents().get(0);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Assignment cAllAssignment_6_0 = (Assignment)cGroup_6.eContents().get(0);
+		private final Keyword cAllDetailedKeyword_6_0_0 = (Keyword)cAllAssignment_6_0.eContents().get(0);
+		private final Group cGroup_6_1 = (Group)cGroup_6.eContents().get(1);
+		private final Assignment cExceptAssignment_6_1_0 = (Assignment)cGroup_6_1.eContents().get(0);
+		private final Keyword cExceptExceptKeyword_6_1_0_0 = (Keyword)cExceptAssignment_6_1_0.eContents().get(0);
+		private final Assignment cExceptRefAssignment_6_1_1 = (Assignment)cGroup_6_1.eContents().get(1);
+		private final CrossReference cExceptRefCubeLevelCrossReference_6_1_1_0 = (CrossReference)cExceptRefAssignment_6_1_1.eContents().get(0);
+		private final RuleCall cExceptRefCubeLevelIDTerminalRuleCall_6_1_1_0_1 = (RuleCall)cExceptRefCubeLevelCrossReference_6_1_1_0.eContents().get(1);
+		private final Group cGroup_6_2 = (Group)cGroup_6.eContents().get(2);
+		private final Assignment cOrderedAssignment_6_2_0 = (Assignment)cGroup_6_2.eContents().get(0);
+		private final Keyword cOrderedOrderedByKeyword_6_2_0_0 = (Keyword)cOrderedAssignment_6_2_0.eContents().get(0);
+		private final Assignment cOrderRefAssignment_6_2_1 = (Assignment)cGroup_6_2.eContents().get(1);
+		private final Alternatives cOrderRefAlternatives_6_2_1_0 = (Alternatives)cOrderRefAssignment_6_2_1.eContents().get(0);
+		private final RuleCall cOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0 = (RuleCall)cOrderRefAlternatives_6_2_1_0.eContents().get(0);
+		private final RuleCall cOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1 = (RuleCall)cOrderRefAlternatives_6_2_1_0.eContents().get(1);
+		private final Assignment cDescendingAssignment_6_2_2 = (Assignment)cGroup_6_2.eContents().get(2);
+		private final Keyword cDescendingDescendingKeyword_6_2_2_0 = (Keyword)cDescendingAssignment_6_2_2.eContents().get(0);
+		
+		//DatamartHierarchy returns datamart::DatamartHierarchy:
+		//	"hierarchy" hierarchyRef=[cube::CubeHierarchy] defaultMember?="default"? allMember?="condensed"?
+		//	allLevels?="exploded"? ("level" levelRef=[cube::CubeLevel] (filtered?="filtered" | selected?="selected")?)?
+		//	(all?="detailed" (except?="except" exceptRef=[cube::CubeLevel])? (ordered?="ordered by" orderRef=(DatamartMeasure |
+		//	DatamartDerivedMeasure) descending?="descending"?)?)?;
+		public ParserRule getRule() { return rule; }
+
+		//"hierarchy" hierarchyRef=[cube::CubeHierarchy] defaultMember?="default"? allMember?="condensed"? allLevels?="exploded"?
+		//("level" levelRef=[cube::CubeLevel] (filtered?="filtered" | selected?="selected")?)? (all?="detailed"
+		//(except?="except" exceptRef=[cube::CubeLevel])? (ordered?="ordered by" orderRef=(DatamartMeasure |
+		//DatamartDerivedMeasure) descending?="descending"?)?)?
+		public Group getGroup() { return cGroup; }
+
+		//"hierarchy"
+		public Keyword getHierarchyKeyword_0() { return cHierarchyKeyword_0; }
+
+		//hierarchyRef=[cube::CubeHierarchy]
+		public Assignment getHierarchyRefAssignment_1() { return cHierarchyRefAssignment_1; }
+
+		//[cube::CubeHierarchy]
+		public CrossReference getHierarchyRefCubeHierarchyCrossReference_1_0() { return cHierarchyRefCubeHierarchyCrossReference_1_0; }
+
+		//ID
+		public RuleCall getHierarchyRefCubeHierarchyIDTerminalRuleCall_1_0_1() { return cHierarchyRefCubeHierarchyIDTerminalRuleCall_1_0_1; }
+
+		//defaultMember?="default"?
+		public Assignment getDefaultMemberAssignment_2() { return cDefaultMemberAssignment_2; }
+
+		//"default"
+		public Keyword getDefaultMemberDefaultKeyword_2_0() { return cDefaultMemberDefaultKeyword_2_0; }
+
+		//allMember?="condensed"?
+		public Assignment getAllMemberAssignment_3() { return cAllMemberAssignment_3; }
+
+		//"condensed"
+		public Keyword getAllMemberCondensedKeyword_3_0() { return cAllMemberCondensedKeyword_3_0; }
+
+		//allLevels?="exploded"?
+		public Assignment getAllLevelsAssignment_4() { return cAllLevelsAssignment_4; }
+
+		//"exploded"
+		public Keyword getAllLevelsExplodedKeyword_4_0() { return cAllLevelsExplodedKeyword_4_0; }
+
+		//("level" levelRef=[cube::CubeLevel] (filtered?="filtered" | selected?="selected")?)?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"level"
+		public Keyword getLevelKeyword_5_0() { return cLevelKeyword_5_0; }
+
+		//levelRef=[cube::CubeLevel]
+		public Assignment getLevelRefAssignment_5_1() { return cLevelRefAssignment_5_1; }
+
+		//[cube::CubeLevel]
+		public CrossReference getLevelRefCubeLevelCrossReference_5_1_0() { return cLevelRefCubeLevelCrossReference_5_1_0; }
+
+		//ID
+		public RuleCall getLevelRefCubeLevelIDTerminalRuleCall_5_1_0_1() { return cLevelRefCubeLevelIDTerminalRuleCall_5_1_0_1; }
+
+		//(filtered?="filtered" | selected?="selected")?
+		public Alternatives getAlternatives_5_2() { return cAlternatives_5_2; }
+
+		//filtered?="filtered"
+		public Assignment getFilteredAssignment_5_2_0() { return cFilteredAssignment_5_2_0; }
+
+		//"filtered"
+		public Keyword getFilteredFilteredKeyword_5_2_0_0() { return cFilteredFilteredKeyword_5_2_0_0; }
+
+		//selected?="selected"
+		public Assignment getSelectedAssignment_5_2_1() { return cSelectedAssignment_5_2_1; }
+
+		//"selected"
+		public Keyword getSelectedSelectedKeyword_5_2_1_0() { return cSelectedSelectedKeyword_5_2_1_0; }
+
+		//(all?="detailed" (except?="except" exceptRef=[cube::CubeLevel])? (ordered?="ordered by" orderRef=(DatamartMeasure |
+		//DatamartDerivedMeasure) descending?="descending"?)?)?
+		public Group getGroup_6() { return cGroup_6; }
+
+		//all?="detailed"
+		public Assignment getAllAssignment_6_0() { return cAllAssignment_6_0; }
+
+		//"detailed"
+		public Keyword getAllDetailedKeyword_6_0_0() { return cAllDetailedKeyword_6_0_0; }
+
+		//(except?="except" exceptRef=[cube::CubeLevel])?
+		public Group getGroup_6_1() { return cGroup_6_1; }
+
+		//except?="except"
+		public Assignment getExceptAssignment_6_1_0() { return cExceptAssignment_6_1_0; }
+
+		//"except"
+		public Keyword getExceptExceptKeyword_6_1_0_0() { return cExceptExceptKeyword_6_1_0_0; }
+
+		//exceptRef=[cube::CubeLevel]
+		public Assignment getExceptRefAssignment_6_1_1() { return cExceptRefAssignment_6_1_1; }
+
+		//[cube::CubeLevel]
+		public CrossReference getExceptRefCubeLevelCrossReference_6_1_1_0() { return cExceptRefCubeLevelCrossReference_6_1_1_0; }
+
+		//ID
+		public RuleCall getExceptRefCubeLevelIDTerminalRuleCall_6_1_1_0_1() { return cExceptRefCubeLevelIDTerminalRuleCall_6_1_1_0_1; }
+
+		//(ordered?="ordered by" orderRef=(DatamartMeasure | DatamartDerivedMeasure) descending?="descending"?)?
+		public Group getGroup_6_2() { return cGroup_6_2; }
+
+		//ordered?="ordered by"
+		public Assignment getOrderedAssignment_6_2_0() { return cOrderedAssignment_6_2_0; }
+
+		//"ordered by"
+		public Keyword getOrderedOrderedByKeyword_6_2_0_0() { return cOrderedOrderedByKeyword_6_2_0_0; }
+
+		//orderRef=(DatamartMeasure | DatamartDerivedMeasure)
+		public Assignment getOrderRefAssignment_6_2_1() { return cOrderRefAssignment_6_2_1; }
+
+		//DatamartMeasure | DatamartDerivedMeasure
+		public Alternatives getOrderRefAlternatives_6_2_1_0() { return cOrderRefAlternatives_6_2_1_0; }
+
+		//DatamartMeasure
+		public RuleCall getOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0() { return cOrderRefDatamartMeasureParserRuleCall_6_2_1_0_0; }
+
+		//DatamartDerivedMeasure
+		public RuleCall getOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1() { return cOrderRefDatamartDerivedMeasureParserRuleCall_6_2_1_0_1; }
+
+		//descending?="descending"?
+		public Assignment getDescendingAssignment_6_2_2() { return cDescendingAssignment_6_2_2; }
+
+		//"descending"
+		public Keyword getDescendingDescendingKeyword_6_2_2_0() { return cDescendingDescendingKeyword_6_2_2_0; }
+	}
+
+	public class DatamartImportElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartImport");
+		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 cImportedNamespaceDatamartQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
+		
+		//DatamartImport returns types::LImport:
+		//	"import" importedNamespace=DatamartQualifiedNameWithWildCard;
+		public ParserRule getRule() { return rule; }
+
+		//"import" importedNamespace=DatamartQualifiedNameWithWildCard
+		public Group getGroup() { return cGroup; }
+
+		//"import"
+		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
+
+		//importedNamespace=DatamartQualifiedNameWithWildCard
+		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
+
+		//DatamartQualifiedNameWithWildCard
+		public RuleCall getImportedNamespaceDatamartQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceDatamartQualifiedNameWithWildCardParserRuleCall_1_0; }
+	}
+
+	public class DatamartQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DatamartQualifiedNameWithWildCard");
+		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);
+		
+		//DatamartQualifiedNameWithWildCard:
+		//	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 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 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 PropertyFillerDataElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerData");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cPropertyRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cPropertyRefLEntityAttributeCrossReference_1_0 = (CrossReference)cPropertyRefAssignment_1.eContents().get(0);
+		private final RuleCall cPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1 = (RuleCall)cPropertyRefLEntityAttributeCrossReference_1_0.eContents().get(1);
+		private final Keyword cWithKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cFillerTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cFillerTypePropertyFillerTypeParserRuleCall_3_0 = (RuleCall)cFillerTypeAssignment_3.eContents().get(0);
+		
+		//PropertyFillerData returns datamart::PropertyFillerData:
+		//	"fill" propertyRef=[entity::LEntityAttribute] "with" fillerType=PropertyFillerType;
+		public ParserRule getRule() { return rule; }
+
+		//"fill" propertyRef=[entity::LEntityAttribute] "with" fillerType=PropertyFillerType
+		public Group getGroup() { return cGroup; }
+
+		//"fill"
+		public Keyword getFillKeyword_0() { return cFillKeyword_0; }
+
+		//propertyRef=[entity::LEntityAttribute]
+		public Assignment getPropertyRefAssignment_1() { return cPropertyRefAssignment_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getPropertyRefLEntityAttributeCrossReference_1_0() { return cPropertyRefLEntityAttributeCrossReference_1_0; }
+
+		//ID
+		public RuleCall getPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1() { return cPropertyRefLEntityAttributeIDTerminalRuleCall_1_0_1; }
+
+		//"with"
+		public Keyword getWithKeyword_2() { return cWithKeyword_2; }
+
+		//fillerType=PropertyFillerType
+		public Assignment getFillerTypeAssignment_3() { return cFillerTypeAssignment_3; }
+
+		//PropertyFillerType
+		public RuleCall getFillerTypePropertyFillerTypeParserRuleCall_3_0() { return cFillerTypePropertyFillerTypeParserRuleCall_3_0; }
+	}
+
+	public class PropertyFillerTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cPropertyFillerDateFutureParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cPropertyFillerDatePastParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cPropertyFillerDateRangeParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cPropertyFillerSignedDoubleRangeParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cPropertyFillerSignedDoubleRandomParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cPropertyFillerSignedIntegerRangeParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cPropertyFillerSignedIntegerRandomParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cPropertyFillerTextRandomParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cPropertyFillerTextParagraphsParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cPropertyFillerTextSentencesParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cPropertyFillerTextWordsParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cPropertyFillerUnsignedDoubleRangeParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cPropertyFillerUnsignedDoubleRandomParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		private final RuleCall cPropertyFillerUnsignedIntegerRangeParserRuleCall_13 = (RuleCall)cAlternatives.eContents().get(13);
+		private final RuleCall cPropertyFillerUnsignedIntegerRandomParserRuleCall_14 = (RuleCall)cAlternatives.eContents().get(14);
+		
+		//PropertyFillerType returns datamart::PropertyFillerType:
+		//	PropertyFillerDateFuture | PropertyFillerDatePast | PropertyFillerDateRange | PropertyFillerSignedDoubleRange |
+		//	PropertyFillerSignedDoubleRandom | PropertyFillerSignedIntegerRange | PropertyFillerSignedIntegerRandom |
+		//	PropertyFillerTextRandom | PropertyFillerTextParagraphs | PropertyFillerTextSentences | PropertyFillerTextWords |
+		//	PropertyFillerUnsignedDoubleRange | PropertyFillerUnsignedDoubleRandom | PropertyFillerUnsignedIntegerRange |
+		//	PropertyFillerUnsignedIntegerRandom;
+		public ParserRule getRule() { return rule; }
+
+		//PropertyFillerDateFuture | PropertyFillerDatePast | PropertyFillerDateRange | PropertyFillerSignedDoubleRange |
+		//PropertyFillerSignedDoubleRandom | PropertyFillerSignedIntegerRange | PropertyFillerSignedIntegerRandom |
+		//PropertyFillerTextRandom | PropertyFillerTextParagraphs | PropertyFillerTextSentences | PropertyFillerTextWords |
+		//PropertyFillerUnsignedDoubleRange | PropertyFillerUnsignedDoubleRandom | PropertyFillerUnsignedIntegerRange |
+		//PropertyFillerUnsignedIntegerRandom
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//PropertyFillerDateFuture
+		public RuleCall getPropertyFillerDateFutureParserRuleCall_0() { return cPropertyFillerDateFutureParserRuleCall_0; }
+
+		//PropertyFillerDatePast
+		public RuleCall getPropertyFillerDatePastParserRuleCall_1() { return cPropertyFillerDatePastParserRuleCall_1; }
+
+		//PropertyFillerDateRange
+		public RuleCall getPropertyFillerDateRangeParserRuleCall_2() { return cPropertyFillerDateRangeParserRuleCall_2; }
+
+		//PropertyFillerSignedDoubleRange
+		public RuleCall getPropertyFillerSignedDoubleRangeParserRuleCall_3() { return cPropertyFillerSignedDoubleRangeParserRuleCall_3; }
+
+		//PropertyFillerSignedDoubleRandom
+		public RuleCall getPropertyFillerSignedDoubleRandomParserRuleCall_4() { return cPropertyFillerSignedDoubleRandomParserRuleCall_4; }
+
+		//PropertyFillerSignedIntegerRange
+		public RuleCall getPropertyFillerSignedIntegerRangeParserRuleCall_5() { return cPropertyFillerSignedIntegerRangeParserRuleCall_5; }
+
+		//PropertyFillerSignedIntegerRandom
+		public RuleCall getPropertyFillerSignedIntegerRandomParserRuleCall_6() { return cPropertyFillerSignedIntegerRandomParserRuleCall_6; }
+
+		//PropertyFillerTextRandom
+		public RuleCall getPropertyFillerTextRandomParserRuleCall_7() { return cPropertyFillerTextRandomParserRuleCall_7; }
+
+		//PropertyFillerTextParagraphs
+		public RuleCall getPropertyFillerTextParagraphsParserRuleCall_8() { return cPropertyFillerTextParagraphsParserRuleCall_8; }
+
+		//PropertyFillerTextSentences
+		public RuleCall getPropertyFillerTextSentencesParserRuleCall_9() { return cPropertyFillerTextSentencesParserRuleCall_9; }
+
+		//PropertyFillerTextWords
+		public RuleCall getPropertyFillerTextWordsParserRuleCall_10() { return cPropertyFillerTextWordsParserRuleCall_10; }
+
+		//PropertyFillerUnsignedDoubleRange
+		public RuleCall getPropertyFillerUnsignedDoubleRangeParserRuleCall_11() { return cPropertyFillerUnsignedDoubleRangeParserRuleCall_11; }
+
+		//PropertyFillerUnsignedDoubleRandom
+		public RuleCall getPropertyFillerUnsignedDoubleRandomParserRuleCall_12() { return cPropertyFillerUnsignedDoubleRandomParserRuleCall_12; }
+
+		//PropertyFillerUnsignedIntegerRange
+		public RuleCall getPropertyFillerUnsignedIntegerRangeParserRuleCall_13() { return cPropertyFillerUnsignedIntegerRangeParserRuleCall_13; }
+
+		//PropertyFillerUnsignedIntegerRandom
+		public RuleCall getPropertyFillerUnsignedIntegerRandomParserRuleCall_14() { return cPropertyFillerUnsignedIntegerRandomParserRuleCall_14; }
+	}
+
+	public class PropertyFillerDateFutureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerDateFuture");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerDateFutureKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDateFutureYearsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cDateFutureYearsINTTerminalRuleCall_1_0 = (RuleCall)cDateFutureYearsAssignment_1.eContents().get(0);
+		private final Keyword cYearsKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		
+		//PropertyFillerDateFuture returns datamart::PropertyFillerDateFuture:
+		//	"filler-date future" dateFutureYears=INT "years";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-date future" dateFutureYears=INT "years"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-date future"
+		public Keyword getFillerDateFutureKeyword_0() { return cFillerDateFutureKeyword_0; }
+
+		//dateFutureYears=INT
+		public Assignment getDateFutureYearsAssignment_1() { return cDateFutureYearsAssignment_1; }
+
+		//INT
+		public RuleCall getDateFutureYearsINTTerminalRuleCall_1_0() { return cDateFutureYearsINTTerminalRuleCall_1_0; }
+
+		//"years"
+		public Keyword getYearsKeyword_2() { return cYearsKeyword_2; }
+	}
+
+	public class PropertyFillerDatePastElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerDatePast");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerDatePastKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDatePastYearsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cDatePastYearsINTTerminalRuleCall_1_0 = (RuleCall)cDatePastYearsAssignment_1.eContents().get(0);
+		private final Keyword cYearsKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		
+		//PropertyFillerDatePast returns datamart::PropertyFillerDatePast:
+		//	"filler-date past" datePastYears=INT "years";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-date past" datePastYears=INT "years"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-date past"
+		public Keyword getFillerDatePastKeyword_0() { return cFillerDatePastKeyword_0; }
+
+		//datePastYears=INT
+		public Assignment getDatePastYearsAssignment_1() { return cDatePastYearsAssignment_1; }
+
+		//INT
+		public RuleCall getDatePastYearsINTTerminalRuleCall_1_0() { return cDatePastYearsINTTerminalRuleCall_1_0; }
+
+		//"years"
+		public Keyword getYearsKeyword_2() { return cYearsKeyword_2; }
+	}
+
+	public class PropertyFillerDateRangeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerDateRange");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerDateRangeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDateBeginYearsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cDateBeginYearsSINTParserRuleCall_1_0 = (RuleCall)cDateBeginYearsAssignment_1.eContents().get(0);
+		private final Keyword cUpToAndIncludingKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDateEndYearsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDateEndYearsSINTParserRuleCall_3_0 = (RuleCall)cDateEndYearsAssignment_3.eContents().get(0);
+		private final Keyword cYearsKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//PropertyFillerDateRange returns datamart::PropertyFillerDateRange:
+		//	"filler-date range" dateBeginYears=SINT "up to and including" dateEndYears=SINT "years";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-date range" dateBeginYears=SINT "up to and including" dateEndYears=SINT "years"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-date range"
+		public Keyword getFillerDateRangeKeyword_0() { return cFillerDateRangeKeyword_0; }
+
+		//dateBeginYears=SINT
+		public Assignment getDateBeginYearsAssignment_1() { return cDateBeginYearsAssignment_1; }
+
+		//SINT
+		public RuleCall getDateBeginYearsSINTParserRuleCall_1_0() { return cDateBeginYearsSINTParserRuleCall_1_0; }
+
+		//"up to and including"
+		public Keyword getUpToAndIncludingKeyword_2() { return cUpToAndIncludingKeyword_2; }
+
+		//dateEndYears=SINT
+		public Assignment getDateEndYearsAssignment_3() { return cDateEndYearsAssignment_3; }
+
+		//SINT
+		public RuleCall getDateEndYearsSINTParserRuleCall_3_0() { return cDateEndYearsSINTParserRuleCall_3_0; }
+
+		//"years"
+		public Keyword getYearsKeyword_4() { return cYearsKeyword_4; }
+	}
+
+	public class PropertyFillerSignedDoubleRangeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerSignedDoubleRange");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerSignedDoubleRangeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
+		private final Assignment cBeginRangeAssignment_1_0_0 = (Assignment)cAlternatives_1_0.eContents().get(0);
+		private final RuleCall cBeginRangeSignedNumberParserRuleCall_1_0_0_0 = (RuleCall)cBeginRangeAssignment_1_0_0.eContents().get(0);
+		private final Assignment cBeginRangeRefAssignment_1_0_1 = (Assignment)cAlternatives_1_0.eContents().get(1);
+		private final CrossReference cBeginRangeRefLEntityAttributeCrossReference_1_0_1_0 = (CrossReference)cBeginRangeRefAssignment_1_0_1.eContents().get(0);
+		private final RuleCall cBeginRangeRefLEntityAttributeIDTerminalRuleCall_1_0_1_0_1 = (RuleCall)cBeginRangeRefLEntityAttributeCrossReference_1_0_1_0.eContents().get(1);
+		private final Keyword cUpToAndIncludingKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Alternatives cAlternatives_1_2 = (Alternatives)cGroup_1.eContents().get(2);
+		private final Assignment cEndRangeAssignment_1_2_0 = (Assignment)cAlternatives_1_2.eContents().get(0);
+		private final RuleCall cEndRangeSignedNumberParserRuleCall_1_2_0_0 = (RuleCall)cEndRangeAssignment_1_2_0.eContents().get(0);
+		private final Assignment cEndRangeRefAssignment_1_2_1 = (Assignment)cAlternatives_1_2.eContents().get(1);
+		private final CrossReference cEndRangeRefLEntityAttributeCrossReference_1_2_1_0 = (CrossReference)cEndRangeRefAssignment_1_2_1.eContents().get(0);
+		private final RuleCall cEndRangeRefLEntityAttributeIDTerminalRuleCall_1_2_1_0_1 = (RuleCall)cEndRangeRefLEntityAttributeCrossReference_1_2_1_0.eContents().get(1);
+		private final Keyword cWithKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDecimalsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDecimalsINTTerminalRuleCall_3_0 = (RuleCall)cDecimalsAssignment_3.eContents().get(0);
+		private final Keyword cDecimalsKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cRoundToKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cRoundedAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final RuleCall cRoundedUnsignedNumberParserRuleCall_5_1_0 = (RuleCall)cRoundedAssignment_5_1.eContents().get(0);
+		
+		//PropertyFillerSignedDoubleRange returns datamart::PropertyFillerSignedDoubleRange:
+		//	"filler-signed-double range" ((beginRange=SignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+		//	"up to and including" (endRange=SignedNumber | endRangeRef=[entity::LEntityAttribute]))? "with" decimals=INT
+		//	"decimals" ("round to" rounded=UnsignedNumber)?;
+		public ParserRule getRule() { return rule; }
+
+		//"filler-signed-double range" ((beginRange=SignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+		//"up to and including" (endRange=SignedNumber | endRangeRef=[entity::LEntityAttribute]))? "with" decimals=INT
+		//"decimals" ("round to" rounded=UnsignedNumber)?
+		public Group getGroup() { return cGroup; }
+
+		//"filler-signed-double range"
+		public Keyword getFillerSignedDoubleRangeKeyword_0() { return cFillerSignedDoubleRangeKeyword_0; }
+
+		//((beginRange=SignedNumber | beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=SignedNumber |
+		//endRangeRef=[entity::LEntityAttribute]))?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//(beginRange=SignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
+
+		//beginRange=SignedNumber
+		public Assignment getBeginRangeAssignment_1_0_0() { return cBeginRangeAssignment_1_0_0; }
+
+		//SignedNumber
+		public RuleCall getBeginRangeSignedNumberParserRuleCall_1_0_0_0() { return cBeginRangeSignedNumberParserRuleCall_1_0_0_0; }
+
+		//beginRangeRef=[entity::LEntityAttribute]
+		public Assignment getBeginRangeRefAssignment_1_0_1() { return cBeginRangeRefAssignment_1_0_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getBeginRangeRefLEntityAttributeCrossReference_1_0_1_0() { return cBeginRangeRefLEntityAttributeCrossReference_1_0_1_0; }
+
+		//ID
+		public RuleCall getBeginRangeRefLEntityAttributeIDTerminalRuleCall_1_0_1_0_1() { return cBeginRangeRefLEntityAttributeIDTerminalRuleCall_1_0_1_0_1; }
+
+		//"up to and including"
+		public Keyword getUpToAndIncludingKeyword_1_1() { return cUpToAndIncludingKeyword_1_1; }
+
+		//endRange=SignedNumber | endRangeRef=[entity::LEntityAttribute]
+		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }
+
+		//endRange=SignedNumber
+		public Assignment getEndRangeAssignment_1_2_0() { return cEndRangeAssignment_1_2_0; }
+
+		//SignedNumber
+		public RuleCall getEndRangeSignedNumberParserRuleCall_1_2_0_0() { return cEndRangeSignedNumberParserRuleCall_1_2_0_0; }
+
+		//endRangeRef=[entity::LEntityAttribute]
+		public Assignment getEndRangeRefAssignment_1_2_1() { return cEndRangeRefAssignment_1_2_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getEndRangeRefLEntityAttributeCrossReference_1_2_1_0() { return cEndRangeRefLEntityAttributeCrossReference_1_2_1_0; }
+
+		//ID
+		public RuleCall getEndRangeRefLEntityAttributeIDTerminalRuleCall_1_2_1_0_1() { return cEndRangeRefLEntityAttributeIDTerminalRuleCall_1_2_1_0_1; }
+
+		//"with"
+		public Keyword getWithKeyword_2() { return cWithKeyword_2; }
+
+		//decimals=INT
+		public Assignment getDecimalsAssignment_3() { return cDecimalsAssignment_3; }
+
+		//INT
+		public RuleCall getDecimalsINTTerminalRuleCall_3_0() { return cDecimalsINTTerminalRuleCall_3_0; }
+
+		//"decimals"
+		public Keyword getDecimalsKeyword_4() { return cDecimalsKeyword_4; }
+
+		//("round to" rounded=UnsignedNumber)?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"round to"
+		public Keyword getRoundToKeyword_5_0() { return cRoundToKeyword_5_0; }
+
+		//rounded=UnsignedNumber
+		public Assignment getRoundedAssignment_5_1() { return cRoundedAssignment_5_1; }
+
+		//UnsignedNumber
+		public RuleCall getRoundedUnsignedNumberParserRuleCall_5_1_0() { return cRoundedUnsignedNumberParserRuleCall_5_1_0; }
+	}
+
+	public class PropertyFillerSignedDoubleRandomElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerSignedDoubleRandom");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerSignedDoubleRandomKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cItemsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cItemsSignedNumberParserRuleCall_2_0 = (RuleCall)cItemsAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//PropertyFillerSignedDoubleRandom returns datamart::PropertyFillerSignedDoubleRandom:
+		//	"filler-signed-double random" "(" items+=SignedNumber+ ")";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-signed-double random" "(" items+=SignedNumber+ ")"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-signed-double random"
+		public Keyword getFillerSignedDoubleRandomKeyword_0() { return cFillerSignedDoubleRandomKeyword_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//items+=SignedNumber+
+		public Assignment getItemsAssignment_2() { return cItemsAssignment_2; }
+
+		//SignedNumber
+		public RuleCall getItemsSignedNumberParserRuleCall_2_0() { return cItemsSignedNumberParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class PropertyFillerSignedIntegerRangeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerSignedIntegerRange");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPropertyFillerSignedIntegerRangeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFillerSignedIntegerRangeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Alternatives cAlternatives_2_0 = (Alternatives)cGroup_2.eContents().get(0);
+		private final Assignment cBeginRangeAssignment_2_0_0 = (Assignment)cAlternatives_2_0.eContents().get(0);
+		private final RuleCall cBeginRangeSINTParserRuleCall_2_0_0_0 = (RuleCall)cBeginRangeAssignment_2_0_0.eContents().get(0);
+		private final Assignment cBeginRangeRefAssignment_2_0_1 = (Assignment)cAlternatives_2_0.eContents().get(1);
+		private final CrossReference cBeginRangeRefLEntityAttributeCrossReference_2_0_1_0 = (CrossReference)cBeginRangeRefAssignment_2_0_1.eContents().get(0);
+		private final RuleCall cBeginRangeRefLEntityAttributeIDTerminalRuleCall_2_0_1_0_1 = (RuleCall)cBeginRangeRefLEntityAttributeCrossReference_2_0_1_0.eContents().get(1);
+		private final Keyword cUpToAndIncludingKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
+		private final Alternatives cAlternatives_2_2 = (Alternatives)cGroup_2.eContents().get(2);
+		private final Assignment cEndRangeAssignment_2_2_0 = (Assignment)cAlternatives_2_2.eContents().get(0);
+		private final RuleCall cEndRangeSINTParserRuleCall_2_2_0_0 = (RuleCall)cEndRangeAssignment_2_2_0.eContents().get(0);
+		private final Assignment cEndRangeRefAssignment_2_2_1 = (Assignment)cAlternatives_2_2.eContents().get(1);
+		private final CrossReference cEndRangeRefLEntityAttributeCrossReference_2_2_1_0 = (CrossReference)cEndRangeRefAssignment_2_2_1.eContents().get(0);
+		private final RuleCall cEndRangeRefLEntityAttributeIDTerminalRuleCall_2_2_1_0_1 = (RuleCall)cEndRangeRefLEntityAttributeCrossReference_2_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cRoundToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cRoundedAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cRoundedINTTerminalRuleCall_3_1_0 = (RuleCall)cRoundedAssignment_3_1.eContents().get(0);
+		
+		//PropertyFillerSignedIntegerRange returns datamart::PropertyFillerSignedIntegerRange:
+		//	{datamart::PropertyFillerSignedIntegerRange} "filler-signed-integer range" ((beginRange=SINT |
+		//	beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=SINT |
+		//	endRangeRef=[entity::LEntityAttribute]))? ("round to" rounded=INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//{datamart::PropertyFillerSignedIntegerRange} "filler-signed-integer range" ((beginRange=SINT |
+		//beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=SINT |
+		//endRangeRef=[entity::LEntityAttribute]))? ("round to" rounded=INT)?
+		public Group getGroup() { return cGroup; }
+
+		//{datamart::PropertyFillerSignedIntegerRange}
+		public Action getPropertyFillerSignedIntegerRangeAction_0() { return cPropertyFillerSignedIntegerRangeAction_0; }
+
+		//"filler-signed-integer range"
+		public Keyword getFillerSignedIntegerRangeKeyword_1() { return cFillerSignedIntegerRangeKeyword_1; }
+
+		//((beginRange=SINT | beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=SINT |
+		//endRangeRef=[entity::LEntityAttribute]))?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//(beginRange=SINT | beginRangeRef=[entity::LEntityAttribute])?
+		public Alternatives getAlternatives_2_0() { return cAlternatives_2_0; }
+
+		//beginRange=SINT
+		public Assignment getBeginRangeAssignment_2_0_0() { return cBeginRangeAssignment_2_0_0; }
+
+		//SINT
+		public RuleCall getBeginRangeSINTParserRuleCall_2_0_0_0() { return cBeginRangeSINTParserRuleCall_2_0_0_0; }
+
+		//beginRangeRef=[entity::LEntityAttribute]
+		public Assignment getBeginRangeRefAssignment_2_0_1() { return cBeginRangeRefAssignment_2_0_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getBeginRangeRefLEntityAttributeCrossReference_2_0_1_0() { return cBeginRangeRefLEntityAttributeCrossReference_2_0_1_0; }
+
+		//ID
+		public RuleCall getBeginRangeRefLEntityAttributeIDTerminalRuleCall_2_0_1_0_1() { return cBeginRangeRefLEntityAttributeIDTerminalRuleCall_2_0_1_0_1; }
+
+		//"up to and including"
+		public Keyword getUpToAndIncludingKeyword_2_1() { return cUpToAndIncludingKeyword_2_1; }
+
+		//endRange=SINT | endRangeRef=[entity::LEntityAttribute]
+		public Alternatives getAlternatives_2_2() { return cAlternatives_2_2; }
+
+		//endRange=SINT
+		public Assignment getEndRangeAssignment_2_2_0() { return cEndRangeAssignment_2_2_0; }
+
+		//SINT
+		public RuleCall getEndRangeSINTParserRuleCall_2_2_0_0() { return cEndRangeSINTParserRuleCall_2_2_0_0; }
+
+		//endRangeRef=[entity::LEntityAttribute]
+		public Assignment getEndRangeRefAssignment_2_2_1() { return cEndRangeRefAssignment_2_2_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getEndRangeRefLEntityAttributeCrossReference_2_2_1_0() { return cEndRangeRefLEntityAttributeCrossReference_2_2_1_0; }
+
+		//ID
+		public RuleCall getEndRangeRefLEntityAttributeIDTerminalRuleCall_2_2_1_0_1() { return cEndRangeRefLEntityAttributeIDTerminalRuleCall_2_2_1_0_1; }
+
+		//("round to" rounded=INT)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"round to"
+		public Keyword getRoundToKeyword_3_0() { return cRoundToKeyword_3_0; }
+
+		//rounded=INT
+		public Assignment getRoundedAssignment_3_1() { return cRoundedAssignment_3_1; }
+
+		//INT
+		public RuleCall getRoundedINTTerminalRuleCall_3_1_0() { return cRoundedINTTerminalRuleCall_3_1_0; }
+	}
+
+	public class PropertyFillerSignedIntegerRandomElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerSignedIntegerRandom");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerSignedIntegerRandomKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cItemsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cItemsSINTParserRuleCall_2_0 = (RuleCall)cItemsAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//PropertyFillerSignedIntegerRandom returns datamart::PropertyFillerSignedIntegerRandom:
+		//	"filler-signed-integer random" "(" items+=SINT+ ")";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-signed-integer random" "(" items+=SINT+ ")"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-signed-integer random"
+		public Keyword getFillerSignedIntegerRandomKeyword_0() { return cFillerSignedIntegerRandomKeyword_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//items+=SINT+
+		public Assignment getItemsAssignment_2() { return cItemsAssignment_2; }
+
+		//SINT
+		public RuleCall getItemsSINTParserRuleCall_2_0() { return cItemsSINTParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class PropertyFillerTextRandomElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerTextRandom");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerTextRandomKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cItemsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cItemsSTRINGTerminalRuleCall_2_0 = (RuleCall)cItemsAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//PropertyFillerTextRandom returns datamart::PropertyFillerTextRandom:
+		//	"filler-text random" "(" items+=STRING+ ")";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-text random" "(" items+=STRING+ ")"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-text random"
+		public Keyword getFillerTextRandomKeyword_0() { return cFillerTextRandomKeyword_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//items+=STRING+
+		public Assignment getItemsAssignment_2() { return cItemsAssignment_2; }
+
+		//STRING
+		public RuleCall getItemsSTRINGTerminalRuleCall_2_0() { return cItemsSTRINGTerminalRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class PropertyFillerTextParagraphsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerTextParagraphs");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPropertyFillerTextParagraphsAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFillerTextParagrapsKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cCountAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cCountINTTerminalRuleCall_2_0 = (RuleCall)cCountAssignment_2.eContents().get(0);
+		
+		//PropertyFillerTextParagraphs returns datamart::PropertyFillerTextParagraphs:
+		//	{datamart::PropertyFillerTextParagraphs} "filler-text paragraps" count=INT?;
+		public ParserRule getRule() { return rule; }
+
+		//{datamart::PropertyFillerTextParagraphs} "filler-text paragraps" count=INT?
+		public Group getGroup() { return cGroup; }
+
+		//{datamart::PropertyFillerTextParagraphs}
+		public Action getPropertyFillerTextParagraphsAction_0() { return cPropertyFillerTextParagraphsAction_0; }
+
+		//"filler-text paragraps"
+		public Keyword getFillerTextParagrapsKeyword_1() { return cFillerTextParagrapsKeyword_1; }
+
+		//count=INT?
+		public Assignment getCountAssignment_2() { return cCountAssignment_2; }
+
+		//INT
+		public RuleCall getCountINTTerminalRuleCall_2_0() { return cCountINTTerminalRuleCall_2_0; }
+	}
+
+	public class PropertyFillerTextSentencesElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerTextSentences");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPropertyFillerTextSentencesAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFillerTextSentencesKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cCountAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cCountINTTerminalRuleCall_2_0 = (RuleCall)cCountAssignment_2.eContents().get(0);
+		
+		//PropertyFillerTextSentences returns datamart::PropertyFillerTextSentences:
+		//	{datamart::PropertyFillerTextSentences} "filler-text sentences" count=INT?;
+		public ParserRule getRule() { return rule; }
+
+		//{datamart::PropertyFillerTextSentences} "filler-text sentences" count=INT?
+		public Group getGroup() { return cGroup; }
+
+		//{datamart::PropertyFillerTextSentences}
+		public Action getPropertyFillerTextSentencesAction_0() { return cPropertyFillerTextSentencesAction_0; }
+
+		//"filler-text sentences"
+		public Keyword getFillerTextSentencesKeyword_1() { return cFillerTextSentencesKeyword_1; }
+
+		//count=INT?
+		public Assignment getCountAssignment_2() { return cCountAssignment_2; }
+
+		//INT
+		public RuleCall getCountINTTerminalRuleCall_2_0() { return cCountINTTerminalRuleCall_2_0; }
+	}
+
+	public class PropertyFillerTextWordsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerTextWords");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPropertyFillerTextWordsAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFillerTextWordsKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cCountAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cCountINTTerminalRuleCall_2_0 = (RuleCall)cCountAssignment_2.eContents().get(0);
+		
+		//PropertyFillerTextWords returns datamart::PropertyFillerTextWords:
+		//	{datamart::PropertyFillerTextWords} "filler-text words" count=INT?;
+		public ParserRule getRule() { return rule; }
+
+		//{datamart::PropertyFillerTextWords} "filler-text words" count=INT?
+		public Group getGroup() { return cGroup; }
+
+		//{datamart::PropertyFillerTextWords}
+		public Action getPropertyFillerTextWordsAction_0() { return cPropertyFillerTextWordsAction_0; }
+
+		//"filler-text words"
+		public Keyword getFillerTextWordsKeyword_1() { return cFillerTextWordsKeyword_1; }
+
+		//count=INT?
+		public Assignment getCountAssignment_2() { return cCountAssignment_2; }
+
+		//INT
+		public RuleCall getCountINTTerminalRuleCall_2_0() { return cCountINTTerminalRuleCall_2_0; }
+	}
+
+	public class PropertyFillerUnsignedDoubleRangeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerUnsignedDoubleRange");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerUnsignedDoubleRangeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_1_0 = (Alternatives)cGroup_1.eContents().get(0);
+		private final Assignment cBeginRangeAssignment_1_0_0 = (Assignment)cAlternatives_1_0.eContents().get(0);
+		private final RuleCall cBeginRangeUnsignedNumberParserRuleCall_1_0_0_0 = (RuleCall)cBeginRangeAssignment_1_0_0.eContents().get(0);
+		private final Assignment cBeginRangeRefAssignment_1_0_1 = (Assignment)cAlternatives_1_0.eContents().get(1);
+		private final CrossReference cBeginRangeRefLEntityAttributeCrossReference_1_0_1_0 = (CrossReference)cBeginRangeRefAssignment_1_0_1.eContents().get(0);
+		private final RuleCall cBeginRangeRefLEntityAttributeIDTerminalRuleCall_1_0_1_0_1 = (RuleCall)cBeginRangeRefLEntityAttributeCrossReference_1_0_1_0.eContents().get(1);
+		private final Keyword cUpToAndIncludingKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		private final Alternatives cAlternatives_1_2 = (Alternatives)cGroup_1.eContents().get(2);
+		private final Assignment cEndRangeAssignment_1_2_0 = (Assignment)cAlternatives_1_2.eContents().get(0);
+		private final RuleCall cEndRangeUnsignedNumberParserRuleCall_1_2_0_0 = (RuleCall)cEndRangeAssignment_1_2_0.eContents().get(0);
+		private final Assignment cEndRangeRefAssignment_1_2_1 = (Assignment)cAlternatives_1_2.eContents().get(1);
+		private final CrossReference cEndRangeRefLEntityAttributeCrossReference_1_2_1_0 = (CrossReference)cEndRangeRefAssignment_1_2_1.eContents().get(0);
+		private final RuleCall cEndRangeRefLEntityAttributeIDTerminalRuleCall_1_2_1_0_1 = (RuleCall)cEndRangeRefLEntityAttributeCrossReference_1_2_1_0.eContents().get(1);
+		private final Keyword cWithKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cDecimalsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDecimalsINTTerminalRuleCall_3_0 = (RuleCall)cDecimalsAssignment_3.eContents().get(0);
+		private final Keyword cDecimalsKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cRoundToKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cRoundedAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final RuleCall cRoundedUnsignedNumberParserRuleCall_5_1_0 = (RuleCall)cRoundedAssignment_5_1.eContents().get(0);
+		
+		//PropertyFillerUnsignedDoubleRange returns datamart::PropertyFillerUnsignedDoubleRange:
+		//	"filler-unsigned-double range" ((beginRange=UnsignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+		//	"up to and including" (endRange=UnsignedNumber | endRangeRef=[entity::LEntityAttribute]))? "with" decimals=INT
+		//	"decimals" ("round to" rounded=UnsignedNumber)?;
+		public ParserRule getRule() { return rule; }
+
+		//"filler-unsigned-double range" ((beginRange=UnsignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+		//"up to and including" (endRange=UnsignedNumber | endRangeRef=[entity::LEntityAttribute]))? "with" decimals=INT
+		//"decimals" ("round to" rounded=UnsignedNumber)?
+		public Group getGroup() { return cGroup; }
+
+		//"filler-unsigned-double range"
+		public Keyword getFillerUnsignedDoubleRangeKeyword_0() { return cFillerUnsignedDoubleRangeKeyword_0; }
+
+		//((beginRange=UnsignedNumber | beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=UnsignedNumber
+		//| endRangeRef=[entity::LEntityAttribute]))?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//(beginRange=UnsignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+		public Alternatives getAlternatives_1_0() { return cAlternatives_1_0; }
+
+		//beginRange=UnsignedNumber
+		public Assignment getBeginRangeAssignment_1_0_0() { return cBeginRangeAssignment_1_0_0; }
+
+		//UnsignedNumber
+		public RuleCall getBeginRangeUnsignedNumberParserRuleCall_1_0_0_0() { return cBeginRangeUnsignedNumberParserRuleCall_1_0_0_0; }
+
+		//beginRangeRef=[entity::LEntityAttribute]
+		public Assignment getBeginRangeRefAssignment_1_0_1() { return cBeginRangeRefAssignment_1_0_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getBeginRangeRefLEntityAttributeCrossReference_1_0_1_0() { return cBeginRangeRefLEntityAttributeCrossReference_1_0_1_0; }
+
+		//ID
+		public RuleCall getBeginRangeRefLEntityAttributeIDTerminalRuleCall_1_0_1_0_1() { return cBeginRangeRefLEntityAttributeIDTerminalRuleCall_1_0_1_0_1; }
+
+		//"up to and including"
+		public Keyword getUpToAndIncludingKeyword_1_1() { return cUpToAndIncludingKeyword_1_1; }
+
+		//endRange=UnsignedNumber | endRangeRef=[entity::LEntityAttribute]
+		public Alternatives getAlternatives_1_2() { return cAlternatives_1_2; }
+
+		//endRange=UnsignedNumber
+		public Assignment getEndRangeAssignment_1_2_0() { return cEndRangeAssignment_1_2_0; }
+
+		//UnsignedNumber
+		public RuleCall getEndRangeUnsignedNumberParserRuleCall_1_2_0_0() { return cEndRangeUnsignedNumberParserRuleCall_1_2_0_0; }
+
+		//endRangeRef=[entity::LEntityAttribute]
+		public Assignment getEndRangeRefAssignment_1_2_1() { return cEndRangeRefAssignment_1_2_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getEndRangeRefLEntityAttributeCrossReference_1_2_1_0() { return cEndRangeRefLEntityAttributeCrossReference_1_2_1_0; }
+
+		//ID
+		public RuleCall getEndRangeRefLEntityAttributeIDTerminalRuleCall_1_2_1_0_1() { return cEndRangeRefLEntityAttributeIDTerminalRuleCall_1_2_1_0_1; }
+
+		//"with"
+		public Keyword getWithKeyword_2() { return cWithKeyword_2; }
+
+		//decimals=INT
+		public Assignment getDecimalsAssignment_3() { return cDecimalsAssignment_3; }
+
+		//INT
+		public RuleCall getDecimalsINTTerminalRuleCall_3_0() { return cDecimalsINTTerminalRuleCall_3_0; }
+
+		//"decimals"
+		public Keyword getDecimalsKeyword_4() { return cDecimalsKeyword_4; }
+
+		//("round to" rounded=UnsignedNumber)?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"round to"
+		public Keyword getRoundToKeyword_5_0() { return cRoundToKeyword_5_0; }
+
+		//rounded=UnsignedNumber
+		public Assignment getRoundedAssignment_5_1() { return cRoundedAssignment_5_1; }
+
+		//UnsignedNumber
+		public RuleCall getRoundedUnsignedNumberParserRuleCall_5_1_0() { return cRoundedUnsignedNumberParserRuleCall_5_1_0; }
+	}
+
+	public class PropertyFillerUnsignedDoubleRandomElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerUnsignedDoubleRandom");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerUnsignedDoubleRandomKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cItemsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cItemsUnsignedNumberParserRuleCall_2_0 = (RuleCall)cItemsAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//PropertyFillerUnsignedDoubleRandom returns datamart::PropertyFillerUnsignedDoubleRandom:
+		//	"filler-unsigned-double random" "(" items+=UnsignedNumber+ ")";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-unsigned-double random" "(" items+=UnsignedNumber+ ")"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-unsigned-double random"
+		public Keyword getFillerUnsignedDoubleRandomKeyword_0() { return cFillerUnsignedDoubleRandomKeyword_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//items+=UnsignedNumber+
+		public Assignment getItemsAssignment_2() { return cItemsAssignment_2; }
+
+		//UnsignedNumber
+		public RuleCall getItemsUnsignedNumberParserRuleCall_2_0() { return cItemsUnsignedNumberParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class PropertyFillerUnsignedIntegerRangeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerUnsignedIntegerRange");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cPropertyFillerUnsignedIntegerRangeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFillerUnsignedIntegerRangeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Alternatives cAlternatives_2_0 = (Alternatives)cGroup_2.eContents().get(0);
+		private final Assignment cBeginRangeAssignment_2_0_0 = (Assignment)cAlternatives_2_0.eContents().get(0);
+		private final RuleCall cBeginRangeINTTerminalRuleCall_2_0_0_0 = (RuleCall)cBeginRangeAssignment_2_0_0.eContents().get(0);
+		private final Assignment cBeginRangeRefAssignment_2_0_1 = (Assignment)cAlternatives_2_0.eContents().get(1);
+		private final CrossReference cBeginRangeRefLEntityAttributeCrossReference_2_0_1_0 = (CrossReference)cBeginRangeRefAssignment_2_0_1.eContents().get(0);
+		private final RuleCall cBeginRangeRefLEntityAttributeIDTerminalRuleCall_2_0_1_0_1 = (RuleCall)cBeginRangeRefLEntityAttributeCrossReference_2_0_1_0.eContents().get(1);
+		private final Keyword cUpToAndIncludingKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
+		private final Alternatives cAlternatives_2_2 = (Alternatives)cGroup_2.eContents().get(2);
+		private final Assignment cEndRangeAssignment_2_2_0 = (Assignment)cAlternatives_2_2.eContents().get(0);
+		private final RuleCall cEndRangeINTTerminalRuleCall_2_2_0_0 = (RuleCall)cEndRangeAssignment_2_2_0.eContents().get(0);
+		private final Assignment cEndRangeRefAssignment_2_2_1 = (Assignment)cAlternatives_2_2.eContents().get(1);
+		private final CrossReference cEndRangeRefLEntityAttributeCrossReference_2_2_1_0 = (CrossReference)cEndRangeRefAssignment_2_2_1.eContents().get(0);
+		private final RuleCall cEndRangeRefLEntityAttributeIDTerminalRuleCall_2_2_1_0_1 = (RuleCall)cEndRangeRefLEntityAttributeCrossReference_2_2_1_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cRoundToKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cRoundedAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cRoundedINTTerminalRuleCall_3_1_0 = (RuleCall)cRoundedAssignment_3_1.eContents().get(0);
+		
+		//PropertyFillerUnsignedIntegerRange returns datamart::PropertyFillerUnsignedIntegerRange:
+		//	{datamart::PropertyFillerUnsignedIntegerRange} "filler-unsigned-integer range" ((beginRange=INT |
+		//	beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=INT |
+		//	endRangeRef=[entity::LEntityAttribute]))? ("round to" rounded=INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//{datamart::PropertyFillerUnsignedIntegerRange} "filler-unsigned-integer range" ((beginRange=INT |
+		//beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=INT |
+		//endRangeRef=[entity::LEntityAttribute]))? ("round to" rounded=INT)?
+		public Group getGroup() { return cGroup; }
+
+		//{datamart::PropertyFillerUnsignedIntegerRange}
+		public Action getPropertyFillerUnsignedIntegerRangeAction_0() { return cPropertyFillerUnsignedIntegerRangeAction_0; }
+
+		//"filler-unsigned-integer range"
+		public Keyword getFillerUnsignedIntegerRangeKeyword_1() { return cFillerUnsignedIntegerRangeKeyword_1; }
+
+		//((beginRange=INT | beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=INT |
+		//endRangeRef=[entity::LEntityAttribute]))?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//(beginRange=INT | beginRangeRef=[entity::LEntityAttribute])?
+		public Alternatives getAlternatives_2_0() { return cAlternatives_2_0; }
+
+		//beginRange=INT
+		public Assignment getBeginRangeAssignment_2_0_0() { return cBeginRangeAssignment_2_0_0; }
+
+		//INT
+		public RuleCall getBeginRangeINTTerminalRuleCall_2_0_0_0() { return cBeginRangeINTTerminalRuleCall_2_0_0_0; }
+
+		//beginRangeRef=[entity::LEntityAttribute]
+		public Assignment getBeginRangeRefAssignment_2_0_1() { return cBeginRangeRefAssignment_2_0_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getBeginRangeRefLEntityAttributeCrossReference_2_0_1_0() { return cBeginRangeRefLEntityAttributeCrossReference_2_0_1_0; }
+
+		//ID
+		public RuleCall getBeginRangeRefLEntityAttributeIDTerminalRuleCall_2_0_1_0_1() { return cBeginRangeRefLEntityAttributeIDTerminalRuleCall_2_0_1_0_1; }
+
+		//"up to and including"
+		public Keyword getUpToAndIncludingKeyword_2_1() { return cUpToAndIncludingKeyword_2_1; }
+
+		//endRange=INT | endRangeRef=[entity::LEntityAttribute]
+		public Alternatives getAlternatives_2_2() { return cAlternatives_2_2; }
+
+		//endRange=INT
+		public Assignment getEndRangeAssignment_2_2_0() { return cEndRangeAssignment_2_2_0; }
+
+		//INT
+		public RuleCall getEndRangeINTTerminalRuleCall_2_2_0_0() { return cEndRangeINTTerminalRuleCall_2_2_0_0; }
+
+		//endRangeRef=[entity::LEntityAttribute]
+		public Assignment getEndRangeRefAssignment_2_2_1() { return cEndRangeRefAssignment_2_2_1; }
+
+		//[entity::LEntityAttribute]
+		public CrossReference getEndRangeRefLEntityAttributeCrossReference_2_2_1_0() { return cEndRangeRefLEntityAttributeCrossReference_2_2_1_0; }
+
+		//ID
+		public RuleCall getEndRangeRefLEntityAttributeIDTerminalRuleCall_2_2_1_0_1() { return cEndRangeRefLEntityAttributeIDTerminalRuleCall_2_2_1_0_1; }
+
+		//("round to" rounded=INT)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"round to"
+		public Keyword getRoundToKeyword_3_0() { return cRoundToKeyword_3_0; }
+
+		//rounded=INT
+		public Assignment getRoundedAssignment_3_1() { return cRoundedAssignment_3_1; }
+
+		//INT
+		public RuleCall getRoundedINTTerminalRuleCall_3_1_0() { return cRoundedINTTerminalRuleCall_3_1_0; }
+	}
+
+	public class PropertyFillerUnsignedIntegerRandomElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "PropertyFillerUnsignedIntegerRandom");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFillerUnsignedIntegerRandomKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cItemsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cItemsINTTerminalRuleCall_2_0 = (RuleCall)cItemsAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//PropertyFillerUnsignedIntegerRandom returns datamart::PropertyFillerUnsignedIntegerRandom:
+		//	"filler-unsigned-integer random" "(" items+=INT+ ")";
+		public ParserRule getRule() { return rule; }
+
+		//"filler-unsigned-integer random" "(" items+=INT+ ")"
+		public Group getGroup() { return cGroup; }
+
+		//"filler-unsigned-integer random"
+		public Keyword getFillerUnsignedIntegerRandomKeyword_0() { return cFillerUnsignedIntegerRandomKeyword_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//items+=INT+
+		public Assignment getItemsAssignment_2() { return cItemsAssignment_2; }
+
+		//INT
+		public RuleCall getItemsINTTerminalRuleCall_2_0() { return cItemsINTTerminalRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class SignedNumberElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SignedNumber");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final RuleCall cUnsignedNumberParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//SignedNumber returns ecore::EDouble:
+		//	"-"? UnsignedNumber;
+		public ParserRule getRule() { return rule; }
+
+		//"-"? UnsignedNumber
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//UnsignedNumber
+		public RuleCall getUnsignedNumberParserRuleCall_1() { return cUnsignedNumberParserRuleCall_1; }
+	}
+
+	public class UnsignedNumberElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "UnsignedNumber");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_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 cINTTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//UnsignedNumber returns ecore::EDouble:
+		//	INT ("." INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//INT ("." INT)?
+		public Group getGroup() { return cGroup; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_0() { return cINTTerminalRuleCall_0; }
+
+		//("." INT)?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1_1() { return cINTTerminalRuleCall_1_1; }
+	}
+
+	public class SINTElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SINT");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//SINT returns ecore::EInt:
+		//	"-"? INT;
+		public ParserRule getRule() { return rule; }
+
+		//"-"? INT
+		public Group getGroup() { return cGroup; }
+
+		//"-"?
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
+	}
+	
+	
+	public class AxisEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "AxisEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDEFAULTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDEFAULTDefaultKeyword_0_0 = (Keyword)cDEFAULTEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cCOLUMNSEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cCOLUMNSColumnsKeyword_1_0 = (Keyword)cCOLUMNSEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cROWSEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cROWSRowsKeyword_2_0 = (Keyword)cROWSEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cPAGESEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cPAGESPagesKeyword_3_0 = (Keyword)cPAGESEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cSECTIONSEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cSECTIONSSectionsKeyword_4_0 = (Keyword)cSECTIONSEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cCHAPTERSEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cCHAPTERSChaptersKeyword_5_0 = (Keyword)cCHAPTERSEnumLiteralDeclaration_5.eContents().get(0);
+		
+		/// * | AXIS(<index>)* / enum AxisEnum returns datamart::AxisEnum:
+		//	DEFAULT="default" | COLUMNS="columns" | ROWS="rows" | PAGES="pages" | SECTIONS="sections" | CHAPTERS="chapters";
+		public EnumRule getRule() { return rule; }
+
+		//DEFAULT="default" | COLUMNS="columns" | ROWS="rows" | PAGES="pages" | SECTIONS="sections" | CHAPTERS="chapters"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DEFAULT="default"
+		public EnumLiteralDeclaration getDEFAULTEnumLiteralDeclaration_0() { return cDEFAULTEnumLiteralDeclaration_0; }
+
+		//"default"
+		public Keyword getDEFAULTDefaultKeyword_0_0() { return cDEFAULTDefaultKeyword_0_0; }
+
+		//COLUMNS="columns"
+		public EnumLiteralDeclaration getCOLUMNSEnumLiteralDeclaration_1() { return cCOLUMNSEnumLiteralDeclaration_1; }
+
+		//"columns"
+		public Keyword getCOLUMNSColumnsKeyword_1_0() { return cCOLUMNSColumnsKeyword_1_0; }
+
+		//ROWS="rows"
+		public EnumLiteralDeclaration getROWSEnumLiteralDeclaration_2() { return cROWSEnumLiteralDeclaration_2; }
+
+		//"rows"
+		public Keyword getROWSRowsKeyword_2_0() { return cROWSRowsKeyword_2_0; }
+
+		//PAGES="pages"
+		public EnumLiteralDeclaration getPAGESEnumLiteralDeclaration_3() { return cPAGESEnumLiteralDeclaration_3; }
+
+		//"pages"
+		public Keyword getPAGESPagesKeyword_3_0() { return cPAGESPagesKeyword_3_0; }
+
+		//SECTIONS="sections"
+		public EnumLiteralDeclaration getSECTIONSEnumLiteralDeclaration_4() { return cSECTIONSEnumLiteralDeclaration_4; }
+
+		//"sections"
+		public Keyword getSECTIONSSectionsKeyword_4_0() { return cSECTIONSSectionsKeyword_4_0; }
+
+		//CHAPTERS="chapters"
+		public EnumLiteralDeclaration getCHAPTERSEnumLiteralDeclaration_5() { return cCHAPTERSEnumLiteralDeclaration_5; }
+
+		//"chapters"
+		public Keyword getCHAPTERSChaptersKeyword_5_0() { return cCHAPTERSChaptersKeyword_5_0; }
+	}
+
+	public class FunctionEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "FunctionEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cPREVMEMBEREnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cPREVMEMBERPreviousKeyword_0_0 = (Keyword)cPREVMEMBEREnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cNEXTMEMBEREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cNEXTMEMBERNextKeyword_1_0 = (Keyword)cNEXTMEMBEREnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cFIRSTCHILDEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cFIRSTCHILDFirstKeyword_2_0 = (Keyword)cFIRSTCHILDEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cLASTCHILDEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cLASTCHILDLastKeyword_3_0 = (Keyword)cLASTCHILDEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum FunctionEnum returns datamart::FunctionEnum:
+		//	PREVMEMBER="previous" | NEXTMEMBER="next" | FIRSTCHILD="first" | LASTCHILD="last";
+		public EnumRule getRule() { return rule; }
+
+		//PREVMEMBER="previous" | NEXTMEMBER="next" | FIRSTCHILD="first" | LASTCHILD="last"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//PREVMEMBER="previous"
+		public EnumLiteralDeclaration getPREVMEMBEREnumLiteralDeclaration_0() { return cPREVMEMBEREnumLiteralDeclaration_0; }
+
+		//"previous"
+		public Keyword getPREVMEMBERPreviousKeyword_0_0() { return cPREVMEMBERPreviousKeyword_0_0; }
+
+		//NEXTMEMBER="next"
+		public EnumLiteralDeclaration getNEXTMEMBEREnumLiteralDeclaration_1() { return cNEXTMEMBEREnumLiteralDeclaration_1; }
+
+		//"next"
+		public Keyword getNEXTMEMBERNextKeyword_1_0() { return cNEXTMEMBERNextKeyword_1_0; }
+
+		//FIRSTCHILD="first"
+		public EnumLiteralDeclaration getFIRSTCHILDEnumLiteralDeclaration_2() { return cFIRSTCHILDEnumLiteralDeclaration_2; }
+
+		//"first"
+		public Keyword getFIRSTCHILDFirstKeyword_2_0() { return cFIRSTCHILDFirstKeyword_2_0; }
+
+		//LASTCHILD="last"
+		public EnumLiteralDeclaration getLASTCHILDEnumLiteralDeclaration_3() { return cLASTCHILDEnumLiteralDeclaration_3; }
+
+		//"last"
+		public Keyword getLASTCHILDLastKeyword_3_0() { return cLASTCHILDLastKeyword_3_0; }
+	}
+
+	public class ParameterFunctionEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ParameterFunctionEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cLAGEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cLAGLagKeyword_0_0 = (Keyword)cLAGEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cLEADEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cLEADLeadKeyword_1_0 = (Keyword)cLEADEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum ParameterFunctionEnum returns datamart::ParameterFunctionEnum:
+		//	LAG="lag" | LEAD="lead";
+		public EnumRule getRule() { return rule; }
+
+		//LAG="lag" | LEAD="lead"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//LAG="lag"
+		public EnumLiteralDeclaration getLAGEnumLiteralDeclaration_0() { return cLAGEnumLiteralDeclaration_0; }
+
+		//"lag"
+		public Keyword getLAGLagKeyword_0_0() { return cLAGLagKeyword_0_0; }
+
+		//LEAD="lead"
+		public EnumLiteralDeclaration getLEADEnumLiteralDeclaration_1() { return cLEADEnumLiteralDeclaration_1; }
+
+		//"lead"
+		public Keyword getLEADLeadKeyword_1_0() { return cLEADLeadKeyword_1_0; }
+	}
+
+	public class SetFunctionEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "SetFunctionEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cYTDEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cYTDYearToDateKeyword_0_0 = (Keyword)cYTDEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cPERIODSTODATEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cPERIODSTODATEPeriodsKeyword_1_0 = (Keyword)cPERIODSTODATEEnumLiteralDeclaration_1.eContents().get(0);
+		
+		/// *| ALLMEMBERS='all' | ASCENDANTS='ascendants'* / enum SetFunctionEnum returns datamart::SetFunctionEnum:
+		//	YTD="year-to-date" | PERIODSTODATE="periods";
+		public EnumRule getRule() { return rule; }
+
+		//YTD="year-to-date" | PERIODSTODATE="periods"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//YTD="year-to-date"
+		public EnumLiteralDeclaration getYTDEnumLiteralDeclaration_0() { return cYTDEnumLiteralDeclaration_0; }
+
+		//"year-to-date"
+		public Keyword getYTDYearToDateKeyword_0_0() { return cYTDYearToDateKeyword_0_0; }
+
+		//PERIODSTODATE="periods"
+		public EnumLiteralDeclaration getPERIODSTODATEEnumLiteralDeclaration_1() { return cPERIODSTODATEEnumLiteralDeclaration_1; }
+
+		//"periods"
+		public Keyword getPERIODSTODATEPeriodsKeyword_1_0() { return cPERIODSTODATEPeriodsKeyword_1_0; }
+	}
+
+	public class SetParameterFunctionEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "SetParameterFunctionEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cTAILEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cTAILTailKeyword_0_0 = (Keyword)cTAILEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cHEADEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cHEADHeadKeyword_1_0 = (Keyword)cHEADEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum SetParameterFunctionEnum returns datamart::SetParameterFunctionEnum:
+		//	TAIL="tail" | HEAD="head";
+		public EnumRule getRule() { return rule; }
+
+		//TAIL="tail" | HEAD="head"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//TAIL="tail"
+		public EnumLiteralDeclaration getTAILEnumLiteralDeclaration_0() { return cTAILEnumLiteralDeclaration_0; }
+
+		//"tail"
+		public Keyword getTAILTailKeyword_0_0() { return cTAILTailKeyword_0_0; }
+
+		//HEAD="head"
+		public EnumLiteralDeclaration getHEADEnumLiteralDeclaration_1() { return cHEADEnumLiteralDeclaration_1; }
+
+		//"head"
+		public Keyword getHEADHeadKeyword_1_0() { return cHEADHeadKeyword_1_0; }
+	}
+
+	public class SetAggregationEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "SetAggregationEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cTOPCOUNTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cTOPCOUNTTopcountKeyword_0_0 = (Keyword)cTOPCOUNTEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cTOPSUMEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cTOPSUMTopsummationKeyword_1_0 = (Keyword)cTOPSUMEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cTOPPERCENTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cTOPPERCENTToppercentageKeyword_2_0 = (Keyword)cTOPPERCENTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cBOTTOMCOUNTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cBOTTOMCOUNTBottomcountKeyword_3_0 = (Keyword)cBOTTOMCOUNTEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cBOTTOMSUMEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cBOTTOMSUMBottomsummationKeyword_4_0 = (Keyword)cBOTTOMSUMEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cBOTTOMPERCENTEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cBOTTOMPERCENTBottompercentageKeyword_5_0 = (Keyword)cBOTTOMPERCENTEnumLiteralDeclaration_5.eContents().get(0);
+		
+		//enum SetAggregationEnum returns datamart::SetAggregationEnum:
+		//	TOPCOUNT="topcount" | TOPSUM="topsummation" | TOPPERCENT="toppercentage" | BOTTOMCOUNT="bottomcount" |
+		//	BOTTOMSUM="bottomsummation" | BOTTOMPERCENT="bottompercentage";
+		public EnumRule getRule() { return rule; }
+
+		//TOPCOUNT="topcount" | TOPSUM="topsummation" | TOPPERCENT="toppercentage" | BOTTOMCOUNT="bottomcount" |
+		//BOTTOMSUM="bottomsummation" | BOTTOMPERCENT="bottompercentage"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//TOPCOUNT="topcount"
+		public EnumLiteralDeclaration getTOPCOUNTEnumLiteralDeclaration_0() { return cTOPCOUNTEnumLiteralDeclaration_0; }
+
+		//"topcount"
+		public Keyword getTOPCOUNTTopcountKeyword_0_0() { return cTOPCOUNTTopcountKeyword_0_0; }
+
+		//TOPSUM="topsummation"
+		public EnumLiteralDeclaration getTOPSUMEnumLiteralDeclaration_1() { return cTOPSUMEnumLiteralDeclaration_1; }
+
+		//"topsummation"
+		public Keyword getTOPSUMTopsummationKeyword_1_0() { return cTOPSUMTopsummationKeyword_1_0; }
+
+		//TOPPERCENT="toppercentage"
+		public EnumLiteralDeclaration getTOPPERCENTEnumLiteralDeclaration_2() { return cTOPPERCENTEnumLiteralDeclaration_2; }
+
+		//"toppercentage"
+		public Keyword getTOPPERCENTToppercentageKeyword_2_0() { return cTOPPERCENTToppercentageKeyword_2_0; }
+
+		//BOTTOMCOUNT="bottomcount"
+		public EnumLiteralDeclaration getBOTTOMCOUNTEnumLiteralDeclaration_3() { return cBOTTOMCOUNTEnumLiteralDeclaration_3; }
+
+		//"bottomcount"
+		public Keyword getBOTTOMCOUNTBottomcountKeyword_3_0() { return cBOTTOMCOUNTBottomcountKeyword_3_0; }
+
+		//BOTTOMSUM="bottomsummation"
+		public EnumLiteralDeclaration getBOTTOMSUMEnumLiteralDeclaration_4() { return cBOTTOMSUMEnumLiteralDeclaration_4; }
+
+		//"bottomsummation"
+		public Keyword getBOTTOMSUMBottomsummationKeyword_4_0() { return cBOTTOMSUMBottomsummationKeyword_4_0; }
+
+		//BOTTOMPERCENT="bottompercentage"
+		public EnumLiteralDeclaration getBOTTOMPERCENTEnumLiteralDeclaration_5() { return cBOTTOMPERCENTEnumLiteralDeclaration_5; }
+
+		//"bottompercentage"
+		public Keyword getBOTTOMPERCENTBottompercentageKeyword_5_0() { return cBOTTOMPERCENTBottompercentageKeyword_5_0; }
+	}
+
+	public class AggregationEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "AggregationEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cAVGEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cAVGAverageKeyword_0_0 = (Keyword)cAVGEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cSUMEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cSUMSummationKeyword_1_0 = (Keyword)cSUMEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cAGGREGATEEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cAGGREGATEAggregateKeyword_2_0 = (Keyword)cAGGREGATEEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cSTDDEVEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cSTDDEVDeviationKeyword_3_0 = (Keyword)cSTDDEVEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum AggregationEnum returns datamart::AggregationEnum:
+		//	AVG="average" | SUM="summation" | AGGREGATE="aggregate" | STDDEV="deviation";
+		public EnumRule getRule() { return rule; }
+
+		//AVG="average" | SUM="summation" | AGGREGATE="aggregate" | STDDEV="deviation"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//AVG="average"
+		public EnumLiteralDeclaration getAVGEnumLiteralDeclaration_0() { return cAVGEnumLiteralDeclaration_0; }
+
+		//"average"
+		public Keyword getAVGAverageKeyword_0_0() { return cAVGAverageKeyword_0_0; }
+
+		//SUM="summation"
+		public EnumLiteralDeclaration getSUMEnumLiteralDeclaration_1() { return cSUMEnumLiteralDeclaration_1; }
+
+		//"summation"
+		public Keyword getSUMSummationKeyword_1_0() { return cSUMSummationKeyword_1_0; }
+
+		//AGGREGATE="aggregate"
+		public EnumLiteralDeclaration getAGGREGATEEnumLiteralDeclaration_2() { return cAGGREGATEEnumLiteralDeclaration_2; }
+
+		//"aggregate"
+		public Keyword getAGGREGATEAggregateKeyword_2_0() { return cAGGREGATEAggregateKeyword_2_0; }
+
+		//STDDEV="deviation"
+		public EnumLiteralDeclaration getSTDDEVEnumLiteralDeclaration_3() { return cSTDDEVEnumLiteralDeclaration_3; }
+
+		//"deviation"
+		public Keyword getSTDDEVDeviationKeyword_3_0() { return cSTDDEVDeviationKeyword_3_0; }
+	}
+
+	public class OperatorEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "OperatorEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cEQUALSEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cEQUALSEqualsSignKeyword_0_0 = (Keyword)cEQUALSEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cLESSEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cLESSLessThanSignKeyword_1_0 = (Keyword)cLESSEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cGREATEREnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cGREATERGreaterThanSignKeyword_2_0 = (Keyword)cGREATEREnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cLESSEQUALEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cLESSEQUALLessThanSignEqualsSignKeyword_3_0 = (Keyword)cLESSEQUALEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cGREATEREQUALEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cGREATEREQUALGreaterThanSignEqualsSignKeyword_4_0 = (Keyword)cGREATEREQUALEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cLIKEEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cLIKELikeKeyword_5_0 = (Keyword)cLIKEEnumLiteralDeclaration_5.eContents().get(0);
+		
+		//enum OperatorEnum returns datamart::OperatorEnum:
+		//	EQUALS="=" | LESS="<" | GREATER=">" | LESSEQUAL="<=" | GREATEREQUAL=">=" | LIKE="like";
+		public EnumRule getRule() { return rule; }
+
+		//EQUALS="=" | LESS="<" | GREATER=">" | LESSEQUAL="<=" | GREATEREQUAL=">=" | LIKE="like"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//EQUALS="="
+		public EnumLiteralDeclaration getEQUALSEnumLiteralDeclaration_0() { return cEQUALSEnumLiteralDeclaration_0; }
+
+		//"="
+		public Keyword getEQUALSEqualsSignKeyword_0_0() { return cEQUALSEqualsSignKeyword_0_0; }
+
+		//LESS="<"
+		public EnumLiteralDeclaration getLESSEnumLiteralDeclaration_1() { return cLESSEnumLiteralDeclaration_1; }
+
+		//"<"
+		public Keyword getLESSLessThanSignKeyword_1_0() { return cLESSLessThanSignKeyword_1_0; }
+
+		//GREATER=">"
+		public EnumLiteralDeclaration getGREATEREnumLiteralDeclaration_2() { return cGREATEREnumLiteralDeclaration_2; }
+
+		//">"
+		public Keyword getGREATERGreaterThanSignKeyword_2_0() { return cGREATERGreaterThanSignKeyword_2_0; }
+
+		//LESSEQUAL="<="
+		public EnumLiteralDeclaration getLESSEQUALEnumLiteralDeclaration_3() { return cLESSEQUALEnumLiteralDeclaration_3; }
+
+		//"<="
+		public Keyword getLESSEQUALLessThanSignEqualsSignKeyword_3_0() { return cLESSEQUALLessThanSignEqualsSignKeyword_3_0; }
+
+		//GREATEREQUAL=">="
+		public EnumLiteralDeclaration getGREATEREQUALEnumLiteralDeclaration_4() { return cGREATEREQUALEnumLiteralDeclaration_4; }
+
+		//">="
+		public Keyword getGREATEREQUALGreaterThanSignEqualsSignKeyword_4_0() { return cGREATEREQUALGreaterThanSignEqualsSignKeyword_4_0; }
+
+		//LIKE="like"
+		public EnumLiteralDeclaration getLIKEEnumLiteralDeclaration_5() { return cLIKEEnumLiteralDeclaration_5; }
+
+		//"like"
+		public Keyword getLIKELikeKeyword_5_0() { return cLIKELikeKeyword_5_0; }
+	}
+
+	public class SqlAggregationEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "SqlAggregationEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cAVGEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cAVGAverageKeyword_0_0 = (Keyword)cAVGEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cSUMEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cSUMSummationKeyword_1_0 = (Keyword)cSUMEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cCOUNTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cCOUNTCountKeyword_2_0 = (Keyword)cCOUNTEnumLiteralDeclaration_2.eContents().get(0);
+		
+		//enum SqlAggregationEnum returns datamart::SqlAggregationEnum:
+		//	AVG="average" | SUM="summation" | COUNT="count";
+		public EnumRule getRule() { return rule; }
+
+		//AVG="average" | SUM="summation" | COUNT="count"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//AVG="average"
+		public EnumLiteralDeclaration getAVGEnumLiteralDeclaration_0() { return cAVGEnumLiteralDeclaration_0; }
+
+		//"average"
+		public Keyword getAVGAverageKeyword_0_0() { return cAVGAverageKeyword_0_0; }
+
+		//SUM="summation"
+		public EnumLiteralDeclaration getSUMEnumLiteralDeclaration_1() { return cSUMEnumLiteralDeclaration_1; }
+
+		//"summation"
+		public Keyword getSUMSummationKeyword_1_0() { return cSUMSummationKeyword_1_0; }
+
+		//COUNT="count"
+		public EnumLiteralDeclaration getCOUNTEnumLiteralDeclaration_2() { return cCOUNTEnumLiteralDeclaration_2; }
+
+		//"count"
+		public Keyword getCOUNTCountKeyword_2_0() { return cCOUNTCountKeyword_2_0; }
+	}
+
+	public class ValueScaleEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ValueScaleEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cAXISEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cAXISGroup1Keyword_0_0 = (Keyword)cAXISEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS2EnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cAXIS2Group2Keyword_1_0 = (Keyword)cAXIS2EnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS3EnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cAXIS3Group3Keyword_2_0 = (Keyword)cAXIS3EnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS4EnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cAXIS4Group4Keyword_3_0 = (Keyword)cAXIS4EnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS5EnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cAXIS5Group5Keyword_4_0 = (Keyword)cAXIS5EnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS6EnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cAXIS6Group6Keyword_5_0 = (Keyword)cAXIS6EnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS7EnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cAXIS7Group7Keyword_6_0 = (Keyword)cAXIS7EnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS8EnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cAXIS8Group8Keyword_7_0 = (Keyword)cAXIS8EnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cAXIS9EnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cAXIS9Group9Keyword_8_0 = (Keyword)cAXIS9EnumLiteralDeclaration_8.eContents().get(0);
+		
+		//enum ValueScaleEnum returns datamart::ValueScaleEnum:
+		//	AXIS="group1" | AXIS2="group2" | AXIS3="group3" | AXIS4="group4" | AXIS5="group5" | AXIS6="group6" | AXIS7="group7" |
+		//	AXIS8="group8" | AXIS9="group9";
+		public EnumRule getRule() { return rule; }
+
+		//AXIS="group1" | AXIS2="group2" | AXIS3="group3" | AXIS4="group4" | AXIS5="group5" | AXIS6="group6" | AXIS7="group7" |
+		//AXIS8="group8" | AXIS9="group9"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//AXIS="group1"
+		public EnumLiteralDeclaration getAXISEnumLiteralDeclaration_0() { return cAXISEnumLiteralDeclaration_0; }
+
+		//"group1"
+		public Keyword getAXISGroup1Keyword_0_0() { return cAXISGroup1Keyword_0_0; }
+
+		//AXIS2="group2"
+		public EnumLiteralDeclaration getAXIS2EnumLiteralDeclaration_1() { return cAXIS2EnumLiteralDeclaration_1; }
+
+		//"group2"
+		public Keyword getAXIS2Group2Keyword_1_0() { return cAXIS2Group2Keyword_1_0; }
+
+		//AXIS3="group3"
+		public EnumLiteralDeclaration getAXIS3EnumLiteralDeclaration_2() { return cAXIS3EnumLiteralDeclaration_2; }
+
+		//"group3"
+		public Keyword getAXIS3Group3Keyword_2_0() { return cAXIS3Group3Keyword_2_0; }
+
+		//AXIS4="group4"
+		public EnumLiteralDeclaration getAXIS4EnumLiteralDeclaration_3() { return cAXIS4EnumLiteralDeclaration_3; }
+
+		//"group4"
+		public Keyword getAXIS4Group4Keyword_3_0() { return cAXIS4Group4Keyword_3_0; }
+
+		//AXIS5="group5"
+		public EnumLiteralDeclaration getAXIS5EnumLiteralDeclaration_4() { return cAXIS5EnumLiteralDeclaration_4; }
+
+		//"group5"
+		public Keyword getAXIS5Group5Keyword_4_0() { return cAXIS5Group5Keyword_4_0; }
+
+		//AXIS6="group6"
+		public EnumLiteralDeclaration getAXIS6EnumLiteralDeclaration_5() { return cAXIS6EnumLiteralDeclaration_5; }
+
+		//"group6"
+		public Keyword getAXIS6Group6Keyword_5_0() { return cAXIS6Group6Keyword_5_0; }
+
+		//AXIS7="group7"
+		public EnumLiteralDeclaration getAXIS7EnumLiteralDeclaration_6() { return cAXIS7EnumLiteralDeclaration_6; }
+
+		//"group7"
+		public Keyword getAXIS7Group7Keyword_6_0() { return cAXIS7Group7Keyword_6_0; }
+
+		//AXIS8="group8"
+		public EnumLiteralDeclaration getAXIS8EnumLiteralDeclaration_7() { return cAXIS8EnumLiteralDeclaration_7; }
+
+		//"group8"
+		public Keyword getAXIS8Group8Keyword_7_0() { return cAXIS8Group8Keyword_7_0; }
+
+		//AXIS9="group9"
+		public EnumLiteralDeclaration getAXIS9EnumLiteralDeclaration_8() { return cAXIS9EnumLiteralDeclaration_8; }
+
+		//"group9"
+		public Keyword getAXIS9Group9Keyword_8_0() { return cAXIS9Group9Keyword_8_0; }
+	}
+
+	public class TaskQueryTopicEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "TaskQueryTopicEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cQ1EnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cQ1BusinessAdministratorKeyword_0_0 = (Keyword)cQ1EnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cQ2EnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cQ2PotentialOwnerKeyword_1_0 = (Keyword)cQ2EnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cQ3EnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cQ3RecipientKeyword_2_0 = (Keyword)cQ3EnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cQ4EnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cQ4TaskInitiatorKeyword_3_0 = (Keyword)cQ4EnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cQ5EnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cQ5TaskStakeholderKeyword_4_0 = (Keyword)cQ5EnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cQ6EnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cQ6ExcludedOwnerKeyword_5_0 = (Keyword)cQ6EnumLiteralDeclaration_5.eContents().get(0);
+		
+		//enum TaskQueryTopicEnum returns datamart::TaskQueryTopicEnum:
+		//	Q1="BusinessAdministrator" | Q2="PotentialOwner" | Q3="Recipient" | Q4="TaskInitiator" | Q5="TaskStakeholder" |
+		//	Q6="ExcludedOwner";
+		public EnumRule getRule() { return rule; }
+
+		//Q1="BusinessAdministrator" | Q2="PotentialOwner" | Q3="Recipient" | Q4="TaskInitiator" | Q5="TaskStakeholder" |
+		//Q6="ExcludedOwner"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//Q1="BusinessAdministrator"
+		public EnumLiteralDeclaration getQ1EnumLiteralDeclaration_0() { return cQ1EnumLiteralDeclaration_0; }
+
+		//"BusinessAdministrator"
+		public Keyword getQ1BusinessAdministratorKeyword_0_0() { return cQ1BusinessAdministratorKeyword_0_0; }
+
+		//Q2="PotentialOwner"
+		public EnumLiteralDeclaration getQ2EnumLiteralDeclaration_1() { return cQ2EnumLiteralDeclaration_1; }
+
+		//"PotentialOwner"
+		public Keyword getQ2PotentialOwnerKeyword_1_0() { return cQ2PotentialOwnerKeyword_1_0; }
+
+		//Q3="Recipient"
+		public EnumLiteralDeclaration getQ3EnumLiteralDeclaration_2() { return cQ3EnumLiteralDeclaration_2; }
+
+		//"Recipient"
+		public Keyword getQ3RecipientKeyword_2_0() { return cQ3RecipientKeyword_2_0; }
+
+		//Q4="TaskInitiator"
+		public EnumLiteralDeclaration getQ4EnumLiteralDeclaration_3() { return cQ4EnumLiteralDeclaration_3; }
+
+		//"TaskInitiator"
+		public Keyword getQ4TaskInitiatorKeyword_3_0() { return cQ4TaskInitiatorKeyword_3_0; }
+
+		//Q5="TaskStakeholder"
+		public EnumLiteralDeclaration getQ5EnumLiteralDeclaration_4() { return cQ5EnumLiteralDeclaration_4; }
+
+		//"TaskStakeholder"
+		public Keyword getQ5TaskStakeholderKeyword_4_0() { return cQ5TaskStakeholderKeyword_4_0; }
+
+		//Q6="ExcludedOwner"
+		public EnumLiteralDeclaration getQ6EnumLiteralDeclaration_5() { return cQ6EnumLiteralDeclaration_5; }
+
+		//"ExcludedOwner"
+		public Keyword getQ6ExcludedOwnerKeyword_5_0() { return cQ6ExcludedOwnerKeyword_5_0; }
+	}
+
+	public class TaskQueryColumnEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "TaskQueryColumnEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cP1EnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cP1NameKeyword_0_0 = (Keyword)cP1EnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cP2EnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cP2PriorityKeyword_1_0 = (Keyword)cP2EnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cP3EnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cP3StatusKeyword_2_0 = (Keyword)cP3EnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cP4EnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cP4SubjectKeyword_3_0 = (Keyword)cP4EnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cP5EnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cP5DescriptionKeyword_4_0 = (Keyword)cP5EnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cP6EnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cP6ExpirationTimeKeyword_5_0 = (Keyword)cP6EnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cP7EnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cP7CreatedOnKeyword_6_0 = (Keyword)cP7EnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cP8EnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cP8CreatedByKeyword_7_0 = (Keyword)cP8EnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cP9EnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cP9ActivationTimeKeyword_8_0 = (Keyword)cP9EnumLiteralDeclaration_8.eContents().get(0);
+		private final EnumLiteralDeclaration cP10EnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+		private final Keyword cP10ActualOwnerKeyword_9_0 = (Keyword)cP10EnumLiteralDeclaration_9.eContents().get(0);
+		private final EnumLiteralDeclaration cP11EnumLiteralDeclaration_10 = (EnumLiteralDeclaration)cAlternatives.eContents().get(10);
+		private final Keyword cP11TaskIdKeyword_10_0 = (Keyword)cP11EnumLiteralDeclaration_10.eContents().get(0);
+		private final EnumLiteralDeclaration cP12EnumLiteralDeclaration_11 = (EnumLiteralDeclaration)cAlternatives.eContents().get(11);
+		private final Keyword cP12ProcessIdKeyword_11_0 = (Keyword)cP12EnumLiteralDeclaration_11.eContents().get(0);
+		private final EnumLiteralDeclaration cP13EnumLiteralDeclaration_12 = (EnumLiteralDeclaration)cAlternatives.eContents().get(12);
+		private final Keyword cP13ProcessInstanceIdKeyword_12_0 = (Keyword)cP13EnumLiteralDeclaration_12.eContents().get(0);
+		private final EnumLiteralDeclaration cP14EnumLiteralDeclaration_13 = (EnumLiteralDeclaration)cAlternatives.eContents().get(13);
+		private final Keyword cP14ProcessSessionIdKeyword_13_0 = (Keyword)cP14EnumLiteralDeclaration_13.eContents().get(0);
+		
+		//enum TaskQueryColumnEnum returns datamart::TaskQueryColumnEnum:
+		//	P1="Name" | P2="Priority" | P3="Status" | P4="Subject" | P5="Description" | P6="ExpirationTime" | P7="CreatedOn" |
+		//	P8="CreatedBy" | P9="ActivationTime" | P10="ActualOwner" | P11="TaskId" | P12="ProcessId" | P13="ProcessInstanceId" |
+		//	P14="ProcessSessionId";
+		public EnumRule getRule() { return rule; }
+
+		//P1="Name" | P2="Priority" | P3="Status" | P4="Subject" | P5="Description" | P6="ExpirationTime" | P7="CreatedOn" |
+		//P8="CreatedBy" | P9="ActivationTime" | P10="ActualOwner" | P11="TaskId" | P12="ProcessId" | P13="ProcessInstanceId" |
+		//P14="ProcessSessionId"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//P1="Name"
+		public EnumLiteralDeclaration getP1EnumLiteralDeclaration_0() { return cP1EnumLiteralDeclaration_0; }
+
+		//"Name"
+		public Keyword getP1NameKeyword_0_0() { return cP1NameKeyword_0_0; }
+
+		//P2="Priority"
+		public EnumLiteralDeclaration getP2EnumLiteralDeclaration_1() { return cP2EnumLiteralDeclaration_1; }
+
+		//"Priority"
+		public Keyword getP2PriorityKeyword_1_0() { return cP2PriorityKeyword_1_0; }
+
+		//P3="Status"
+		public EnumLiteralDeclaration getP3EnumLiteralDeclaration_2() { return cP3EnumLiteralDeclaration_2; }
+
+		//"Status"
+		public Keyword getP3StatusKeyword_2_0() { return cP3StatusKeyword_2_0; }
+
+		//P4="Subject"
+		public EnumLiteralDeclaration getP4EnumLiteralDeclaration_3() { return cP4EnumLiteralDeclaration_3; }
+
+		//"Subject"
+		public Keyword getP4SubjectKeyword_3_0() { return cP4SubjectKeyword_3_0; }
+
+		//P5="Description"
+		public EnumLiteralDeclaration getP5EnumLiteralDeclaration_4() { return cP5EnumLiteralDeclaration_4; }
+
+		//"Description"
+		public Keyword getP5DescriptionKeyword_4_0() { return cP5DescriptionKeyword_4_0; }
+
+		//P6="ExpirationTime"
+		public EnumLiteralDeclaration getP6EnumLiteralDeclaration_5() { return cP6EnumLiteralDeclaration_5; }
+
+		//"ExpirationTime"
+		public Keyword getP6ExpirationTimeKeyword_5_0() { return cP6ExpirationTimeKeyword_5_0; }
+
+		//P7="CreatedOn"
+		public EnumLiteralDeclaration getP7EnumLiteralDeclaration_6() { return cP7EnumLiteralDeclaration_6; }
+
+		//"CreatedOn"
+		public Keyword getP7CreatedOnKeyword_6_0() { return cP7CreatedOnKeyword_6_0; }
+
+		//P8="CreatedBy"
+		public EnumLiteralDeclaration getP8EnumLiteralDeclaration_7() { return cP8EnumLiteralDeclaration_7; }
+
+		//"CreatedBy"
+		public Keyword getP8CreatedByKeyword_7_0() { return cP8CreatedByKeyword_7_0; }
+
+		//P9="ActivationTime"
+		public EnumLiteralDeclaration getP9EnumLiteralDeclaration_8() { return cP9EnumLiteralDeclaration_8; }
+
+		//"ActivationTime"
+		public Keyword getP9ActivationTimeKeyword_8_0() { return cP9ActivationTimeKeyword_8_0; }
+
+		//P10="ActualOwner"
+		public EnumLiteralDeclaration getP10EnumLiteralDeclaration_9() { return cP10EnumLiteralDeclaration_9; }
+
+		//"ActualOwner"
+		public Keyword getP10ActualOwnerKeyword_9_0() { return cP10ActualOwnerKeyword_9_0; }
+
+		//P11="TaskId"
+		public EnumLiteralDeclaration getP11EnumLiteralDeclaration_10() { return cP11EnumLiteralDeclaration_10; }
+
+		//"TaskId"
+		public Keyword getP11TaskIdKeyword_10_0() { return cP11TaskIdKeyword_10_0; }
+
+		//P12="ProcessId"
+		public EnumLiteralDeclaration getP12EnumLiteralDeclaration_11() { return cP12EnumLiteralDeclaration_11; }
+
+		//"ProcessId"
+		public Keyword getP12ProcessIdKeyword_11_0() { return cP12ProcessIdKeyword_11_0; }
+
+		//P13="ProcessInstanceId"
+		public EnumLiteralDeclaration getP13EnumLiteralDeclaration_12() { return cP13EnumLiteralDeclaration_12; }
+
+		//"ProcessInstanceId"
+		public Keyword getP13ProcessInstanceIdKeyword_12_0() { return cP13ProcessInstanceIdKeyword_12_0; }
+
+		//P14="ProcessSessionId"
+		public EnumLiteralDeclaration getP14EnumLiteralDeclaration_13() { return cP14EnumLiteralDeclaration_13; }
+
+		//"ProcessSessionId"
+		public Keyword getP14ProcessSessionIdKeyword_13_0() { return cP14ProcessSessionIdKeyword_13_0; }
+	}
+
+	public class TaskFilterEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "TaskFilterEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cF1EnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cF1GroupsKeyword_0_0 = (Keyword)cF1EnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cF2EnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cF2UsersKeyword_1_0 = (Keyword)cF2EnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum TaskFilterEnum returns datamart::TaskFilterEnum:
+		//	F1="Groups" | F2="Users";
+		public EnumRule getRule() { return rule; }
+
+		//F1="Groups" | F2="Users"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//F1="Groups"
+		public EnumLiteralDeclaration getF1EnumLiteralDeclaration_0() { return cF1EnumLiteralDeclaration_0; }
+
+		//"Groups"
+		public Keyword getF1GroupsKeyword_0_0() { return cF1GroupsKeyword_0_0; }
+
+		//F2="Users"
+		public EnumLiteralDeclaration getF2EnumLiteralDeclaration_1() { return cF2EnumLiteralDeclaration_1; }
+
+		//"Users"
+		public Keyword getF2UsersKeyword_1_0() { return cF2UsersKeyword_1_0; }
+	}
+
+	public class OrderEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "OrderEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cASCEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cASCAscendingKeyword_0_0 = (Keyword)cASCEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cDESCEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cDESCDescendingKeyword_1_0 = (Keyword)cDESCEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum OrderEnum returns datamart::OrderEnum:
+		//	ASC="ascending" | DESC="descending";
+		public EnumRule getRule() { return rule; }
+
+		//ASC="ascending" | DESC="descending"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ASC="ascending"
+		public EnumLiteralDeclaration getASCEnumLiteralDeclaration_0() { return cASCEnumLiteralDeclaration_0; }
+
+		//"ascending"
+		public Keyword getASCAscendingKeyword_0_0() { return cASCAscendingKeyword_0_0; }
+
+		//DESC="descending"
+		public EnumLiteralDeclaration getDESCEnumLiteralDeclaration_1() { return cDESCEnumLiteralDeclaration_1; }
+
+		//"descending"
+		public Keyword getDESCDescendingKeyword_1_0() { return cDESCDescendingKeyword_1_0; }
+	}
+	
+	private final DatamartModelElements pDatamartModel;
+	private final DatamartPackageElements pDatamartPackage;
+	private final DatamartDefinitionElements pDatamartDefinition;
+	private final DatamartRoleElements pDatamartRole;
+	private final DatamartSourceElements pDatamartSource;
+	private final DatamartTaskElements pDatamartTask;
+	private final DatamartColumnElements pDatamartColumn;
+	private final DatamartTaskFilterElements pDatamartTaskFilter;
+	private final DatamartCubeElements pDatamartCube;
+	private final DatamartReferenceElements pDatamartReference;
+	private final DatamartEntityElements pDatamartEntity;
+	private final DatamartNavigationElements pDatamartNavigation;
+	private final DatamartOwnerElements pDatamartOwner;
+	private final DatamartMemberElements pDatamartMember;
+	private final DatamartPropertyElements pDatamartProperty;
+	private final DatamartConditionElements pDatamartCondition;
+	private final DatamartOrderElements pDatamartOrder;
+	private final DatamartDisjunctionElements pDatamartDisjunction;
+	private final DatamartConjunctionElements pDatamartConjunction;
+	private final DatamartConditionalExpressionElements pDatamartConditionalExpression;
+	private final DatamartOperandElements pDatamartOperand;
+	private final DatamartValueElements pDatamartValue;
+	private final DatamartCubeElementElements pDatamartCubeElement;
+	private final DatamartDefineDerivedMeasureElements pDatamartDefineDerivedMeasure;
+	private final DatamartAdditionElements pDatamartAddition;
+	private final DatamartMultiplicationElements pDatamartMultiplication;
+	private final DatamartPrimaryElements pDatamartPrimary;
+	private final DatamartNumberOrElementElements pDatamartNumberOrElement;
+	private final DatamartMemberTupleElements pDatamartMemberTuple;
+	private final DatamartFunctionElements pDatamartFunction;
+	private final DatamartParameterFunctionElements pDatamartParameterFunction;
+	private final DatamartFunctionIntParameterElements pDatamartFunctionIntParameter;
+	private final DatamartSetFunctionElements pDatamartSetFunction;
+	private final DatamartSetParameterFunctionElements pDatamartSetParameterFunction;
+	private final DatamartSetAggregationFunctionElements pDatamartSetAggregationFunction;
+	private final DatamartSetTupleElements pDatamartSetTuple;
+	private final DatamartAggregationFunctionElements pDatamartAggregationFunction;
+	private final DatamartAggregationElements pDatamartAggregation;
+	private final DatamartSetAggregationElements pDatamartSetAggregation;
+	private final DatamartSlicerElements pDatamartSlicer;
+	private final DatamartAxisElements pDatamartAxis;
+	private final DatamartElementElements pDatamartElement;
+	private final DatamartDerivedMeasureElements pDatamartDerivedMeasure;
+	private final DatamartMeasureElements pDatamartMeasure;
+	private final DatamartHierarchyElements pDatamartHierarchy;
+	private final DatamartImportElements pDatamartImport;
+	private final DatamartQualifiedNameWithWildCardElements pDatamartQualifiedNameWithWildCard;
+	private final QualifiedNameElements pQualifiedName;
+	private final ValidIDElements pValidID;
+	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
+	private final TRANSLATABLEIDElements pTRANSLATABLEID;
+	private final AxisEnumElements unknownRuleAxisEnum;
+	private final FunctionEnumElements unknownRuleFunctionEnum;
+	private final ParameterFunctionEnumElements unknownRuleParameterFunctionEnum;
+	private final SetFunctionEnumElements unknownRuleSetFunctionEnum;
+	private final SetParameterFunctionEnumElements unknownRuleSetParameterFunctionEnum;
+	private final SetAggregationEnumElements unknownRuleSetAggregationEnum;
+	private final AggregationEnumElements unknownRuleAggregationEnum;
+	private final OperatorEnumElements unknownRuleOperatorEnum;
+	private final SqlAggregationEnumElements unknownRuleSqlAggregationEnum;
+	private final ValueScaleEnumElements unknownRuleValueScaleEnum;
+	private final TaskQueryTopicEnumElements unknownRuleTaskQueryTopicEnum;
+	private final TaskQueryColumnEnumElements unknownRuleTaskQueryColumnEnum;
+	private final TaskFilterEnumElements unknownRuleTaskFilterEnum;
+	private final OrderEnumElements unknownRuleOrderEnum;
+	private final PropertyFillerDataElements pPropertyFillerData;
+	private final PropertyFillerTypeElements pPropertyFillerType;
+	private final PropertyFillerDateFutureElements pPropertyFillerDateFuture;
+	private final PropertyFillerDatePastElements pPropertyFillerDatePast;
+	private final PropertyFillerDateRangeElements pPropertyFillerDateRange;
+	private final PropertyFillerSignedDoubleRangeElements pPropertyFillerSignedDoubleRange;
+	private final PropertyFillerSignedDoubleRandomElements pPropertyFillerSignedDoubleRandom;
+	private final PropertyFillerSignedIntegerRangeElements pPropertyFillerSignedIntegerRange;
+	private final PropertyFillerSignedIntegerRandomElements pPropertyFillerSignedIntegerRandom;
+	private final PropertyFillerTextRandomElements pPropertyFillerTextRandom;
+	private final PropertyFillerTextParagraphsElements pPropertyFillerTextParagraphs;
+	private final PropertyFillerTextSentencesElements pPropertyFillerTextSentences;
+	private final PropertyFillerTextWordsElements pPropertyFillerTextWords;
+	private final PropertyFillerUnsignedDoubleRangeElements pPropertyFillerUnsignedDoubleRange;
+	private final PropertyFillerUnsignedDoubleRandomElements pPropertyFillerUnsignedDoubleRandom;
+	private final PropertyFillerUnsignedIntegerRangeElements pPropertyFillerUnsignedIntegerRange;
+	private final PropertyFillerUnsignedIntegerRandomElements pPropertyFillerUnsignedIntegerRandom;
+	private final SignedNumberElements pSignedNumber;
+	private final UnsignedNumberElements pUnsignedNumber;
+	private final SINTElements pSINT;
+	
+	private final Grammar grammar;
+
+	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+
+	@Inject
+	public DatamartDSLGrammarAccess(GrammarProvider grammarProvider,
+		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.pDatamartModel = new DatamartModelElements();
+		this.pDatamartPackage = new DatamartPackageElements();
+		this.pDatamartDefinition = new DatamartDefinitionElements();
+		this.pDatamartRole = new DatamartRoleElements();
+		this.pDatamartSource = new DatamartSourceElements();
+		this.pDatamartTask = new DatamartTaskElements();
+		this.pDatamartColumn = new DatamartColumnElements();
+		this.pDatamartTaskFilter = new DatamartTaskFilterElements();
+		this.pDatamartCube = new DatamartCubeElements();
+		this.pDatamartReference = new DatamartReferenceElements();
+		this.pDatamartEntity = new DatamartEntityElements();
+		this.pDatamartNavigation = new DatamartNavigationElements();
+		this.pDatamartOwner = new DatamartOwnerElements();
+		this.pDatamartMember = new DatamartMemberElements();
+		this.pDatamartProperty = new DatamartPropertyElements();
+		this.pDatamartCondition = new DatamartConditionElements();
+		this.pDatamartOrder = new DatamartOrderElements();
+		this.pDatamartDisjunction = new DatamartDisjunctionElements();
+		this.pDatamartConjunction = new DatamartConjunctionElements();
+		this.pDatamartConditionalExpression = new DatamartConditionalExpressionElements();
+		this.pDatamartOperand = new DatamartOperandElements();
+		this.pDatamartValue = new DatamartValueElements();
+		this.pDatamartCubeElement = new DatamartCubeElementElements();
+		this.pDatamartDefineDerivedMeasure = new DatamartDefineDerivedMeasureElements();
+		this.pDatamartAddition = new DatamartAdditionElements();
+		this.pDatamartMultiplication = new DatamartMultiplicationElements();
+		this.pDatamartPrimary = new DatamartPrimaryElements();
+		this.pDatamartNumberOrElement = new DatamartNumberOrElementElements();
+		this.pDatamartMemberTuple = new DatamartMemberTupleElements();
+		this.pDatamartFunction = new DatamartFunctionElements();
+		this.pDatamartParameterFunction = new DatamartParameterFunctionElements();
+		this.pDatamartFunctionIntParameter = new DatamartFunctionIntParameterElements();
+		this.pDatamartSetFunction = new DatamartSetFunctionElements();
+		this.pDatamartSetParameterFunction = new DatamartSetParameterFunctionElements();
+		this.pDatamartSetAggregationFunction = new DatamartSetAggregationFunctionElements();
+		this.pDatamartSetTuple = new DatamartSetTupleElements();
+		this.pDatamartAggregationFunction = new DatamartAggregationFunctionElements();
+		this.pDatamartAggregation = new DatamartAggregationElements();
+		this.pDatamartSetAggregation = new DatamartSetAggregationElements();
+		this.pDatamartSlicer = new DatamartSlicerElements();
+		this.pDatamartAxis = new DatamartAxisElements();
+		this.pDatamartElement = new DatamartElementElements();
+		this.pDatamartDerivedMeasure = new DatamartDerivedMeasureElements();
+		this.pDatamartMeasure = new DatamartMeasureElements();
+		this.pDatamartHierarchy = new DatamartHierarchyElements();
+		this.pDatamartImport = new DatamartImportElements();
+		this.pDatamartQualifiedNameWithWildCard = new DatamartQualifiedNameWithWildCardElements();
+		this.pQualifiedName = new QualifiedNameElements();
+		this.pValidID = new ValidIDElements();
+		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
+		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
+		this.unknownRuleAxisEnum = new AxisEnumElements();
+		this.unknownRuleFunctionEnum = new FunctionEnumElements();
+		this.unknownRuleParameterFunctionEnum = new ParameterFunctionEnumElements();
+		this.unknownRuleSetFunctionEnum = new SetFunctionEnumElements();
+		this.unknownRuleSetParameterFunctionEnum = new SetParameterFunctionEnumElements();
+		this.unknownRuleSetAggregationEnum = new SetAggregationEnumElements();
+		this.unknownRuleAggregationEnum = new AggregationEnumElements();
+		this.unknownRuleOperatorEnum = new OperatorEnumElements();
+		this.unknownRuleSqlAggregationEnum = new SqlAggregationEnumElements();
+		this.unknownRuleValueScaleEnum = new ValueScaleEnumElements();
+		this.unknownRuleTaskQueryTopicEnum = new TaskQueryTopicEnumElements();
+		this.unknownRuleTaskQueryColumnEnum = new TaskQueryColumnEnumElements();
+		this.unknownRuleTaskFilterEnum = new TaskFilterEnumElements();
+		this.unknownRuleOrderEnum = new OrderEnumElements();
+		this.pPropertyFillerData = new PropertyFillerDataElements();
+		this.pPropertyFillerType = new PropertyFillerTypeElements();
+		this.pPropertyFillerDateFuture = new PropertyFillerDateFutureElements();
+		this.pPropertyFillerDatePast = new PropertyFillerDatePastElements();
+		this.pPropertyFillerDateRange = new PropertyFillerDateRangeElements();
+		this.pPropertyFillerSignedDoubleRange = new PropertyFillerSignedDoubleRangeElements();
+		this.pPropertyFillerSignedDoubleRandom = new PropertyFillerSignedDoubleRandomElements();
+		this.pPropertyFillerSignedIntegerRange = new PropertyFillerSignedIntegerRangeElements();
+		this.pPropertyFillerSignedIntegerRandom = new PropertyFillerSignedIntegerRandomElements();
+		this.pPropertyFillerTextRandom = new PropertyFillerTextRandomElements();
+		this.pPropertyFillerTextParagraphs = new PropertyFillerTextParagraphsElements();
+		this.pPropertyFillerTextSentences = new PropertyFillerTextSentencesElements();
+		this.pPropertyFillerTextWords = new PropertyFillerTextWordsElements();
+		this.pPropertyFillerUnsignedDoubleRange = new PropertyFillerUnsignedDoubleRangeElements();
+		this.pPropertyFillerUnsignedDoubleRandom = new PropertyFillerUnsignedDoubleRandomElements();
+		this.pPropertyFillerUnsignedIntegerRange = new PropertyFillerUnsignedIntegerRangeElements();
+		this.pPropertyFillerUnsignedIntegerRandom = new PropertyFillerUnsignedIntegerRandomElements();
+		this.pSignedNumber = new SignedNumberElements();
+		this.pUnsignedNumber = new UnsignedNumberElements();
+		this.pSINT = new SINTElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.xtext.datamartdsl.DatamartDSL".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;
+	}
+
+	
+	//DatamartModel returns datamart::DatamartModel:
+	//	packages+=DatamartPackage*;
+	public DatamartModelElements getDatamartModelAccess() {
+		return pDatamartModel;
+	}
+	
+	public ParserRule getDatamartModelRule() {
+		return getDatamartModelAccess().getRule();
+	}
+
+	//DatamartPackage returns datamart::DatamartPackage:
+	//	{datamart::DatamartPackage} "package" name=QualifiedName ("{" imports+=DatamartImport*
+	//	definitions+=DatamartDefinition* "}")?;
+	public DatamartPackageElements getDatamartPackageAccess() {
+		return pDatamartPackage;
+	}
+	
+	public ParserRule getDatamartPackageRule() {
+		return getDatamartPackageAccess().getRule();
+	}
+
+	//DatamartDefinition returns datamart::DatamartDefinition:
+	//	"datamart" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("for" "{" roles+=DatamartRole*
+	//	"}")? "using" source=DatamartSource;
+	public DatamartDefinitionElements getDatamartDefinitionAccess() {
+		return pDatamartDefinition;
+	}
+	
+	public ParserRule getDatamartDefinitionRule() {
+		return getDatamartDefinitionAccess().getRule();
+	}
+
+	//DatamartRole returns datamart::DatamartRole:
+	//	"role" assignedRole=[authorization::Role];
+	public DatamartRoleElements getDatamartRoleAccess() {
+		return pDatamartRole;
+	}
+	
+	public ParserRule getDatamartRoleRule() {
+		return getDatamartRoleAccess().getRule();
+	}
+
+	//DatamartSource returns datamart::DatamartSource:
+	//	DatamartCube | DatamartEntity | DatamartTask;
+	public DatamartSourceElements getDatamartSourceAccess() {
+		return pDatamartSource;
+	}
+	
+	public ParserRule getDatamartSourceRule() {
+		return getDatamartSourceAccess().getRule();
+	}
+
+	//DatamartTask returns datamart::DatamartTask:
+	//	"task" taskQuery=TaskQueryTopicEnum ("columns" "{" columns+=DatamartColumn* "}")? ("conditions" "{"
+	//	conditions+=DatamartCondition* "}")?;
+	public DatamartTaskElements getDatamartTaskAccess() {
+		return pDatamartTask;
+	}
+	
+	public ParserRule getDatamartTaskRule() {
+		return getDatamartTaskAccess().getRule();
+	}
+
+	//DatamartColumn returns datamart::DatamartColumn:
+	//	"column" columnRef=TaskQueryColumnEnum;
+	public DatamartColumnElements getDatamartColumnAccess() {
+		return pDatamartColumn;
+	}
+	
+	public ParserRule getDatamartColumnRule() {
+		return getDatamartColumnAccess().getRule();
+	}
+
+	//DatamartTaskFilter returns datamart::DatamartTaskFilter:
+	//	"filter" filterRef=TaskFilterEnum;
+	public DatamartTaskFilterElements getDatamartTaskFilterAccess() {
+		return pDatamartTaskFilter;
+	}
+	
+	public ParserRule getDatamartTaskFilterRule() {
+		return getDatamartTaskFilterAccess().getRule();
+	}
+
+	//DatamartCube returns datamart::DatamartCube:
+	//	"cube" cubeRef=[cube::CubeType] nonEmpty?="nonempty values"? "{" axisslicer+=DatamartCubeElement* "}";
+	public DatamartCubeElements getDatamartCubeAccess() {
+		return pDatamartCube;
+	}
+	
+	public ParserRule getDatamartCubeRule() {
+		return getDatamartCubeAccess().getRule();
+	}
+
+	//DatamartReference returns datamart::DatamartReference:
+	//	"join" ref=[entity::LEntityReference];
+	public DatamartReferenceElements getDatamartReferenceAccess() {
+		return pDatamartReference;
+	}
+	
+	public ParserRule getDatamartReferenceRule() {
+		return getDatamartReferenceAccess().getRule();
+	}
+
+	////DotExpression returns datamart::Ref:
+	////    EntityRef ({datamart::DotExpression.ref=current}  "." 
+	////    	tail=[entity::LEntityReference]
+	////    )*;
+	//// 
+	////EntityRef returns datamart::Ref:
+	////    {datamart::EntityRef} entity=[entity::LEntity]; 
+	//DatamartEntity returns datamart::DatamartEntity:
+	//	"entity" entityRef=[entity::LEntity] tracking?="tracking"? "{" ("navigation" "{" navigations+=DatamartNavigation*
+	//	"}")? ("properties" "{" properties+=DatamartProperty* "}")? ("conditions" "{" conditions+=DatamartCondition* "}")?
+	//	("ordering" "{" ordering+=DatamartOrder* "}")? ("filler rows" fillerMinCountRows=INT "to" fillerMaxCountRows=INT "{"
+	//	fillerDatas+=PropertyFillerData* "}")? "}";
+	public DatamartEntityElements getDatamartEntityAccess() {
+		return pDatamartEntity;
+	}
+	
+	public ParserRule getDatamartEntityRule() {
+		return getDatamartEntityAccess().getRule();
+	}
+
+	//DatamartNavigation returns datamart::DatamartNavigation:
+	//	DatamartOwner | DatamartMember;
+	public DatamartNavigationElements getDatamartNavigationAccess() {
+		return pDatamartNavigation;
+	}
+	
+	public ParserRule getDatamartNavigationRule() {
+		return getDatamartNavigationAccess().getRule();
+	}
+
+	//DatamartOwner returns datamart::DatamartOwner:
+	//	"many to one" joinRef=DatamartReference "to" datamartEntity=DatamartEntity;
+	public DatamartOwnerElements getDatamartOwnerAccess() {
+		return pDatamartOwner;
+	}
+	
+	public ParserRule getDatamartOwnerRule() {
+		return getDatamartOwnerAccess().getRule();
+	}
+
+	//DatamartMember returns datamart::DatamartMember:
+	//	"one to many" joinRef=DatamartReference "to" datamartEntity=DatamartEntity;
+	public DatamartMemberElements getDatamartMemberAccess() {
+		return pDatamartMember;
+	}
+	
+	public ParserRule getDatamartMemberRule() {
+		return getDatamartMemberAccess().getRule();
+	}
+
+	//DatamartProperty returns datamart::DatamartProperty:
+	//	"property" propertyRef=[entity::LEntityAttribute] ((aggregated?="aggregate" aggregate=SqlAggregationEnum)? &
+	//	(placed?="on axis" axis=AxisEnum)? & (scaled?="scale" scale=ValueScaleEnum)?);
+	public DatamartPropertyElements getDatamartPropertyAccess() {
+		return pDatamartProperty;
+	}
+	
+	public ParserRule getDatamartPropertyRule() {
+		return getDatamartPropertyAccess().getRule();
+	}
+
+	//DatamartCondition returns datamart::DatamartCondition:
+	//	"condition" condition=DatamartDisjunction;
+	public DatamartConditionElements getDatamartConditionAccess() {
+		return pDatamartCondition;
+	}
+	
+	public ParserRule getDatamartConditionRule() {
+		return getDatamartConditionAccess().getRule();
+	}
+
+	//DatamartOrder returns datamart::DatamartOrder:
+	//	"order" orderBy=[entity::LEntityAttribute] orderHow=OrderEnum;
+	public DatamartOrderElements getDatamartOrderAccess() {
+		return pDatamartOrder;
+	}
+	
+	public ParserRule getDatamartOrderRule() {
+		return getDatamartOrderAccess().getRule();
+	}
+
+	//DatamartDisjunction returns datamart::Expression:
+	//	DatamartConjunction (({datamart::Disjunction.left=current} "or") right=DatamartConjunction)*;
+	public DatamartDisjunctionElements getDatamartDisjunctionAccess() {
+		return pDatamartDisjunction;
+	}
+	
+	public ParserRule getDatamartDisjunctionRule() {
+		return getDatamartDisjunctionAccess().getRule();
+	}
+
+	//DatamartConjunction returns datamart::Expression:
+	//	DatamartConditionalExpression (({datamart::Conjunction.left=current} "and") right=DatamartConditionalExpression)*;
+	public DatamartConjunctionElements getDatamartConjunctionAccess() {
+		return pDatamartConjunction;
+	}
+	
+	public ParserRule getDatamartConjunctionRule() {
+		return getDatamartConjunctionAccess().getRule();
+	}
+
+	//DatamartConditionalExpression returns datamart::Expression:
+	//	DatamartOperand (({datamart::ConditionalExpression.left=current} operator=OperatorEnum) right=DatamartOperand)*;
+	public DatamartConditionalExpressionElements getDatamartConditionalExpressionAccess() {
+		return pDatamartConditionalExpression;
+	}
+	
+	public ParserRule getDatamartConditionalExpressionRule() {
+		return getDatamartConditionalExpressionAccess().getRule();
+	}
+
+	//DatamartOperand returns datamart::Expression:
+	//	DatamartValue | "(" DatamartDisjunction ")";
+	public DatamartOperandElements getDatamartOperandAccess() {
+		return pDatamartOperand;
+	}
+	
+	public ParserRule getDatamartOperandRule() {
+		return getDatamartOperandAccess().getRule();
+	}
+
+	//DatamartValue returns datamart::Expression:
+	//	numberValue=Number | stringValue=STRING | (filtered?="filtered" optional?="optional"? | selected?="selected") |
+	//	DatamartProperty | DatamartTaskFilter | DatamartColumn;
+	public DatamartValueElements getDatamartValueAccess() {
+		return pDatamartValue;
+	}
+	
+	public ParserRule getDatamartValueRule() {
+		return getDatamartValueAccess().getRule();
+	}
+
+	//DatamartCubeElement returns datamart::DatamartCubeElement:
+	//	DatamartAxis | DatamartSlicer | DatamartDefineDerivedMeasure;
+	public DatamartCubeElementElements getDatamartCubeElementAccess() {
+		return pDatamartCubeElement;
+	}
+	
+	public ParserRule getDatamartCubeElementRule() {
+		return getDatamartCubeElementAccess().getRule();
+	}
+
+	//DatamartDefineDerivedMeasure returns datamart::DatamartDefineDerivedMeasure:
+	//	"derive" name=TRANSLATABLEID "from" derivedElement+=DatamartAddition*;
+	public DatamartDefineDerivedMeasureElements getDatamartDefineDerivedMeasureAccess() {
+		return pDatamartDefineDerivedMeasure;
+	}
+	
+	public ParserRule getDatamartDefineDerivedMeasureRule() {
+		return getDatamartDefineDerivedMeasureAccess().getRule();
+	}
+
+	//DatamartAddition returns datamart::Expression:
+	//	DatamartMultiplication (({datamart::Addition.left=current} "+" | {datamart::Subtraction.left=current} "-")
+	//	right=DatamartMultiplication)*;
+	public DatamartAdditionElements getDatamartAdditionAccess() {
+		return pDatamartAddition;
+	}
+	
+	public ParserRule getDatamartAdditionRule() {
+		return getDatamartAdditionAccess().getRule();
+	}
+
+	//DatamartMultiplication returns datamart::Expression:
+	//	DatamartPrimary (({datamart::Multiplication.left=current} "*" | {datamart::Division.left=current} "/")
+	//	right=DatamartPrimary)*;
+	public DatamartMultiplicationElements getDatamartMultiplicationAccess() {
+		return pDatamartMultiplication;
+	}
+	
+	public ParserRule getDatamartMultiplicationRule() {
+		return getDatamartMultiplicationAccess().getRule();
+	}
+
+	//DatamartPrimary returns datamart::Expression:
+	//	DatamartNumberOrElement | "(" DatamartAddition ")";
+	public DatamartPrimaryElements getDatamartPrimaryAccess() {
+		return pDatamartPrimary;
+	}
+	
+	public ParserRule getDatamartPrimaryRule() {
+		return getDatamartPrimaryAccess().getRule();
+	}
+
+	//DatamartNumberOrElement returns datamart::Expression:
+	//	value=Number | DatamartMeasure | DatamartDerivedMeasure | DatamartMemberTuple | DatamartAggregation;
+	public DatamartNumberOrElementElements getDatamartNumberOrElementAccess() {
+		return pDatamartNumberOrElement;
+	}
+	
+	public ParserRule getDatamartNumberOrElementRule() {
+		return getDatamartNumberOrElementAccess().getRule();
+	}
+
+	//DatamartMemberTuple returns datamart::Expression:
+	//	((function=DatamartFunction | function=DatamartParameterFunction) "of")? hierarchy=DatamartHierarchy
+	//	({datamart::DatamartMemberTuple.left=current} "over" right=DatamartMeasure);
+	public DatamartMemberTupleElements getDatamartMemberTupleAccess() {
+		return pDatamartMemberTuple;
+	}
+	
+	public ParserRule getDatamartMemberTupleRule() {
+		return getDatamartMemberTupleAccess().getRule();
+	}
+
+	//DatamartFunction returns datamart::DatamartFunction:
+	//	function=FunctionEnum;
+	public DatamartFunctionElements getDatamartFunctionAccess() {
+		return pDatamartFunction;
+	}
+	
+	public ParserRule getDatamartFunctionRule() {
+		return getDatamartFunctionAccess().getRule();
+	}
+
+	//DatamartParameterFunction returns datamart::DatamartParameterFunction:
+	//	function=ParameterFunctionEnum "(" parameter=DatamartFunctionIntParameter ")";
+	public DatamartParameterFunctionElements getDatamartParameterFunctionAccess() {
+		return pDatamartParameterFunction;
+	}
+	
+	public ParserRule getDatamartParameterFunctionRule() {
+		return getDatamartParameterFunctionAccess().getRule();
+	}
+
+	//DatamartFunctionIntParameter returns datamart::DatamartFunctionIntParameter:
+	//	value=INT;
+	public DatamartFunctionIntParameterElements getDatamartFunctionIntParameterAccess() {
+		return pDatamartFunctionIntParameter;
+	}
+	
+	public ParserRule getDatamartFunctionIntParameterRule() {
+		return getDatamartFunctionIntParameterAccess().getRule();
+	}
+
+	//DatamartSetFunction returns datamart::DatamartSetFunction:
+	//	setFunction=SetFunctionEnum;
+	public DatamartSetFunctionElements getDatamartSetFunctionAccess() {
+		return pDatamartSetFunction;
+	}
+	
+	public ParserRule getDatamartSetFunctionRule() {
+		return getDatamartSetFunctionAccess().getRule();
+	}
+
+	//DatamartSetParameterFunction returns datamart::DatamartSetParameterFunction:
+	//	setFunction=SetParameterFunctionEnum "(" parameter=DatamartFunctionIntParameter ")";
+	public DatamartSetParameterFunctionElements getDatamartSetParameterFunctionAccess() {
+		return pDatamartSetParameterFunction;
+	}
+	
+	public ParserRule getDatamartSetParameterFunctionRule() {
+		return getDatamartSetParameterFunctionAccess().getRule();
+	}
+
+	//DatamartSetAggregationFunction returns datamart::DatamartSetAggregationFunction:
+	//	aggregation=SetAggregationEnum "(" parameter=DatamartFunctionIntParameter ")";
+	public DatamartSetAggregationFunctionElements getDatamartSetAggregationFunctionAccess() {
+		return pDatamartSetAggregationFunction;
+	}
+	
+	public ParserRule getDatamartSetAggregationFunctionRule() {
+		return getDatamartSetAggregationFunctionAccess().getRule();
+	}
+
+	//DatamartSetTuple returns datamart::Expression:
+	//	(setFunction=DatamartSetFunction | setFunction=DatamartSetParameterFunction)
+	//	({datamart::DatamartSetTuple.left=current} "of" right=DatamartHierarchy);
+	public DatamartSetTupleElements getDatamartSetTupleAccess() {
+		return pDatamartSetTuple;
+	}
+	
+	public ParserRule getDatamartSetTupleRule() {
+		return getDatamartSetTupleAccess().getRule();
+	}
+
+	//DatamartAggregationFunction returns datamart::DatamartAggregationFunction:
+	//	aggregation=AggregationEnum;
+	public DatamartAggregationFunctionElements getDatamartAggregationFunctionAccess() {
+		return pDatamartAggregationFunction;
+	}
+	
+	public ParserRule getDatamartAggregationFunctionRule() {
+		return getDatamartAggregationFunctionAccess().getRule();
+	}
+
+	//DatamartAggregation returns datamart::Expression:
+	//	aggregation=DatamartAggregationFunction "of" (set=DatamartSetTuple | set=DatamartHierarchy)
+	//	({datamart::DatamartAggregation.left=current} "over" right=DatamartMeasure);
+	public DatamartAggregationElements getDatamartAggregationAccess() {
+		return pDatamartAggregation;
+	}
+	
+	public ParserRule getDatamartAggregationRule() {
+		return getDatamartAggregationAccess().getRule();
+	}
+
+	//DatamartSetAggregation returns datamart::Expression:
+	//	aggregation=DatamartSetAggregationFunction "of" (set=DatamartSetTuple | set=DatamartHierarchy)
+	//	({datamart::DatamartSetAggregation.left=current} "over" right=DatamartMeasure);
+	public DatamartSetAggregationElements getDatamartSetAggregationAccess() {
+		return pDatamartSetAggregation;
+	}
+	
+	public ParserRule getDatamartSetAggregationRule() {
+		return getDatamartSetAggregationAccess().getRule();
+	}
+
+	//DatamartSlicer returns datamart::DatamartSlicer:
+	//	"slicer" element=DatamartElement;
+	public DatamartSlicerElements getDatamartSlicerAccess() {
+		return pDatamartSlicer;
+	}
+	
+	public ParserRule getDatamartSlicerRule() {
+		return getDatamartSlicerAccess().getRule();
+	}
+
+	//DatamartAxis returns datamart::DatamartAxis:
+	//	"axis" name=AxisEnum "{" elements+=DatamartElement* "}";
+	public DatamartAxisElements getDatamartAxisAccess() {
+		return pDatamartAxis;
+	}
+	
+	public ParserRule getDatamartAxisRule() {
+		return getDatamartAxisAccess().getRule();
+	}
+
+	//DatamartElement returns datamart::DatamartElement:
+	//	DatamartHierarchy | DatamartMeasure | DatamartDerivedMeasure | DatamartSetAggregation;
+	public DatamartElementElements getDatamartElementAccess() {
+		return pDatamartElement;
+	}
+	
+	public ParserRule getDatamartElementRule() {
+		return getDatamartElementAccess().getRule();
+	}
+
+	//DatamartDerivedMeasure returns datamart::DatamartDerivedMeasure:
+	//	"derived" derivedRef=[datamart::DatamartDefineDerivedMeasure] (scaled?="scale" scale=ValueScaleEnum)?;
+	public DatamartDerivedMeasureElements getDatamartDerivedMeasureAccess() {
+		return pDatamartDerivedMeasure;
+	}
+	
+	public ParserRule getDatamartDerivedMeasureRule() {
+		return getDatamartDerivedMeasureAccess().getRule();
+	}
+
+	//DatamartMeasure returns datamart::DatamartMeasure:
+	//	"measure" measureRef=[cube::CubeMeasure] (scaled?="scale" scale=ValueScaleEnum)?;
+	public DatamartMeasureElements getDatamartMeasureAccess() {
+		return pDatamartMeasure;
+	}
+	
+	public ParserRule getDatamartMeasureRule() {
+		return getDatamartMeasureAccess().getRule();
+	}
+
+	//DatamartHierarchy returns datamart::DatamartHierarchy:
+	//	"hierarchy" hierarchyRef=[cube::CubeHierarchy] defaultMember?="default"? allMember?="condensed"?
+	//	allLevels?="exploded"? ("level" levelRef=[cube::CubeLevel] (filtered?="filtered" | selected?="selected")?)?
+	//	(all?="detailed" (except?="except" exceptRef=[cube::CubeLevel])? (ordered?="ordered by" orderRef=(DatamartMeasure |
+	//	DatamartDerivedMeasure) descending?="descending"?)?)?;
+	public DatamartHierarchyElements getDatamartHierarchyAccess() {
+		return pDatamartHierarchy;
+	}
+	
+	public ParserRule getDatamartHierarchyRule() {
+		return getDatamartHierarchyAccess().getRule();
+	}
+
+	//DatamartImport returns types::LImport:
+	//	"import" importedNamespace=DatamartQualifiedNameWithWildCard;
+	public DatamartImportElements getDatamartImportAccess() {
+		return pDatamartImport;
+	}
+	
+	public ParserRule getDatamartImportRule() {
+		return getDatamartImportAccess().getRule();
+	}
+
+	//DatamartQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public DatamartQualifiedNameWithWildCardElements getDatamartQualifiedNameWithWildCardAccess() {
+		return pDatamartQualifiedNameWithWildCard;
+	}
+	
+	public ParserRule getDatamartQualifiedNameWithWildCardRule() {
+		return getDatamartQualifiedNameWithWildCardAccess().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();
+	}
+
+	//TRANSLATABLESTRING:
+	//	STRING;
+	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
+		return pTRANSLATABLESTRING;
+	}
+	
+	public ParserRule getTRANSLATABLESTRINGRule() {
+		return getTRANSLATABLESTRINGAccess().getRule();
+	}
+
+	//TRANSLATABLEID:
+	//	ID;
+	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
+		return pTRANSLATABLEID;
+	}
+	
+	public ParserRule getTRANSLATABLEIDRule() {
+		return getTRANSLATABLEIDAccess().getRule();
+	}
+
+	/// * | AXIS(<index>)* / enum AxisEnum returns datamart::AxisEnum:
+	//	DEFAULT="default" | COLUMNS="columns" | ROWS="rows" | PAGES="pages" | SECTIONS="sections" | CHAPTERS="chapters";
+	public AxisEnumElements getAxisEnumAccess() {
+		return unknownRuleAxisEnum;
+	}
+	
+	public EnumRule getAxisEnumRule() {
+		return getAxisEnumAccess().getRule();
+	}
+
+	//enum FunctionEnum returns datamart::FunctionEnum:
+	//	PREVMEMBER="previous" | NEXTMEMBER="next" | FIRSTCHILD="first" | LASTCHILD="last";
+	public FunctionEnumElements getFunctionEnumAccess() {
+		return unknownRuleFunctionEnum;
+	}
+	
+	public EnumRule getFunctionEnumRule() {
+		return getFunctionEnumAccess().getRule();
+	}
+
+	//enum ParameterFunctionEnum returns datamart::ParameterFunctionEnum:
+	//	LAG="lag" | LEAD="lead";
+	public ParameterFunctionEnumElements getParameterFunctionEnumAccess() {
+		return unknownRuleParameterFunctionEnum;
+	}
+	
+	public EnumRule getParameterFunctionEnumRule() {
+		return getParameterFunctionEnumAccess().getRule();
+	}
+
+	/// *| ALLMEMBERS='all' | ASCENDANTS='ascendants'* / enum SetFunctionEnum returns datamart::SetFunctionEnum:
+	//	YTD="year-to-date" | PERIODSTODATE="periods";
+	public SetFunctionEnumElements getSetFunctionEnumAccess() {
+		return unknownRuleSetFunctionEnum;
+	}
+	
+	public EnumRule getSetFunctionEnumRule() {
+		return getSetFunctionEnumAccess().getRule();
+	}
+
+	//enum SetParameterFunctionEnum returns datamart::SetParameterFunctionEnum:
+	//	TAIL="tail" | HEAD="head";
+	public SetParameterFunctionEnumElements getSetParameterFunctionEnumAccess() {
+		return unknownRuleSetParameterFunctionEnum;
+	}
+	
+	public EnumRule getSetParameterFunctionEnumRule() {
+		return getSetParameterFunctionEnumAccess().getRule();
+	}
+
+	//enum SetAggregationEnum returns datamart::SetAggregationEnum:
+	//	TOPCOUNT="topcount" | TOPSUM="topsummation" | TOPPERCENT="toppercentage" | BOTTOMCOUNT="bottomcount" |
+	//	BOTTOMSUM="bottomsummation" | BOTTOMPERCENT="bottompercentage";
+	public SetAggregationEnumElements getSetAggregationEnumAccess() {
+		return unknownRuleSetAggregationEnum;
+	}
+	
+	public EnumRule getSetAggregationEnumRule() {
+		return getSetAggregationEnumAccess().getRule();
+	}
+
+	//enum AggregationEnum returns datamart::AggregationEnum:
+	//	AVG="average" | SUM="summation" | AGGREGATE="aggregate" | STDDEV="deviation";
+	public AggregationEnumElements getAggregationEnumAccess() {
+		return unknownRuleAggregationEnum;
+	}
+	
+	public EnumRule getAggregationEnumRule() {
+		return getAggregationEnumAccess().getRule();
+	}
+
+	//enum OperatorEnum returns datamart::OperatorEnum:
+	//	EQUALS="=" | LESS="<" | GREATER=">" | LESSEQUAL="<=" | GREATEREQUAL=">=" | LIKE="like";
+	public OperatorEnumElements getOperatorEnumAccess() {
+		return unknownRuleOperatorEnum;
+	}
+	
+	public EnumRule getOperatorEnumRule() {
+		return getOperatorEnumAccess().getRule();
+	}
+
+	//enum SqlAggregationEnum returns datamart::SqlAggregationEnum:
+	//	AVG="average" | SUM="summation" | COUNT="count";
+	public SqlAggregationEnumElements getSqlAggregationEnumAccess() {
+		return unknownRuleSqlAggregationEnum;
+	}
+	
+	public EnumRule getSqlAggregationEnumRule() {
+		return getSqlAggregationEnumAccess().getRule();
+	}
+
+	//enum ValueScaleEnum returns datamart::ValueScaleEnum:
+	//	AXIS="group1" | AXIS2="group2" | AXIS3="group3" | AXIS4="group4" | AXIS5="group5" | AXIS6="group6" | AXIS7="group7" |
+	//	AXIS8="group8" | AXIS9="group9";
+	public ValueScaleEnumElements getValueScaleEnumAccess() {
+		return unknownRuleValueScaleEnum;
+	}
+	
+	public EnumRule getValueScaleEnumRule() {
+		return getValueScaleEnumAccess().getRule();
+	}
+
+	//enum TaskQueryTopicEnum returns datamart::TaskQueryTopicEnum:
+	//	Q1="BusinessAdministrator" | Q2="PotentialOwner" | Q3="Recipient" | Q4="TaskInitiator" | Q5="TaskStakeholder" |
+	//	Q6="ExcludedOwner";
+	public TaskQueryTopicEnumElements getTaskQueryTopicEnumAccess() {
+		return unknownRuleTaskQueryTopicEnum;
+	}
+	
+	public EnumRule getTaskQueryTopicEnumRule() {
+		return getTaskQueryTopicEnumAccess().getRule();
+	}
+
+	//enum TaskQueryColumnEnum returns datamart::TaskQueryColumnEnum:
+	//	P1="Name" | P2="Priority" | P3="Status" | P4="Subject" | P5="Description" | P6="ExpirationTime" | P7="CreatedOn" |
+	//	P8="CreatedBy" | P9="ActivationTime" | P10="ActualOwner" | P11="TaskId" | P12="ProcessId" | P13="ProcessInstanceId" |
+	//	P14="ProcessSessionId";
+	public TaskQueryColumnEnumElements getTaskQueryColumnEnumAccess() {
+		return unknownRuleTaskQueryColumnEnum;
+	}
+	
+	public EnumRule getTaskQueryColumnEnumRule() {
+		return getTaskQueryColumnEnumAccess().getRule();
+	}
+
+	//enum TaskFilterEnum returns datamart::TaskFilterEnum:
+	//	F1="Groups" | F2="Users";
+	public TaskFilterEnumElements getTaskFilterEnumAccess() {
+		return unknownRuleTaskFilterEnum;
+	}
+	
+	public EnumRule getTaskFilterEnumRule() {
+		return getTaskFilterEnumAccess().getRule();
+	}
+
+	//enum OrderEnum returns datamart::OrderEnum:
+	//	ASC="ascending" | DESC="descending";
+	public OrderEnumElements getOrderEnumAccess() {
+		return unknownRuleOrderEnum;
+	}
+	
+	public EnumRule getOrderEnumRule() {
+		return getOrderEnumAccess().getRule();
+	}
+
+	//PropertyFillerData returns datamart::PropertyFillerData:
+	//	"fill" propertyRef=[entity::LEntityAttribute] "with" fillerType=PropertyFillerType;
+	public PropertyFillerDataElements getPropertyFillerDataAccess() {
+		return pPropertyFillerData;
+	}
+	
+	public ParserRule getPropertyFillerDataRule() {
+		return getPropertyFillerDataAccess().getRule();
+	}
+
+	//PropertyFillerType returns datamart::PropertyFillerType:
+	//	PropertyFillerDateFuture | PropertyFillerDatePast | PropertyFillerDateRange | PropertyFillerSignedDoubleRange |
+	//	PropertyFillerSignedDoubleRandom | PropertyFillerSignedIntegerRange | PropertyFillerSignedIntegerRandom |
+	//	PropertyFillerTextRandom | PropertyFillerTextParagraphs | PropertyFillerTextSentences | PropertyFillerTextWords |
+	//	PropertyFillerUnsignedDoubleRange | PropertyFillerUnsignedDoubleRandom | PropertyFillerUnsignedIntegerRange |
+	//	PropertyFillerUnsignedIntegerRandom;
+	public PropertyFillerTypeElements getPropertyFillerTypeAccess() {
+		return pPropertyFillerType;
+	}
+	
+	public ParserRule getPropertyFillerTypeRule() {
+		return getPropertyFillerTypeAccess().getRule();
+	}
+
+	//PropertyFillerDateFuture returns datamart::PropertyFillerDateFuture:
+	//	"filler-date future" dateFutureYears=INT "years";
+	public PropertyFillerDateFutureElements getPropertyFillerDateFutureAccess() {
+		return pPropertyFillerDateFuture;
+	}
+	
+	public ParserRule getPropertyFillerDateFutureRule() {
+		return getPropertyFillerDateFutureAccess().getRule();
+	}
+
+	//PropertyFillerDatePast returns datamart::PropertyFillerDatePast:
+	//	"filler-date past" datePastYears=INT "years";
+	public PropertyFillerDatePastElements getPropertyFillerDatePastAccess() {
+		return pPropertyFillerDatePast;
+	}
+	
+	public ParserRule getPropertyFillerDatePastRule() {
+		return getPropertyFillerDatePastAccess().getRule();
+	}
+
+	//PropertyFillerDateRange returns datamart::PropertyFillerDateRange:
+	//	"filler-date range" dateBeginYears=SINT "up to and including" dateEndYears=SINT "years";
+	public PropertyFillerDateRangeElements getPropertyFillerDateRangeAccess() {
+		return pPropertyFillerDateRange;
+	}
+	
+	public ParserRule getPropertyFillerDateRangeRule() {
+		return getPropertyFillerDateRangeAccess().getRule();
+	}
+
+	//PropertyFillerSignedDoubleRange returns datamart::PropertyFillerSignedDoubleRange:
+	//	"filler-signed-double range" ((beginRange=SignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+	//	"up to and including" (endRange=SignedNumber | endRangeRef=[entity::LEntityAttribute]))? "with" decimals=INT
+	//	"decimals" ("round to" rounded=UnsignedNumber)?;
+	public PropertyFillerSignedDoubleRangeElements getPropertyFillerSignedDoubleRangeAccess() {
+		return pPropertyFillerSignedDoubleRange;
+	}
+	
+	public ParserRule getPropertyFillerSignedDoubleRangeRule() {
+		return getPropertyFillerSignedDoubleRangeAccess().getRule();
+	}
+
+	//PropertyFillerSignedDoubleRandom returns datamart::PropertyFillerSignedDoubleRandom:
+	//	"filler-signed-double random" "(" items+=SignedNumber+ ")";
+	public PropertyFillerSignedDoubleRandomElements getPropertyFillerSignedDoubleRandomAccess() {
+		return pPropertyFillerSignedDoubleRandom;
+	}
+	
+	public ParserRule getPropertyFillerSignedDoubleRandomRule() {
+		return getPropertyFillerSignedDoubleRandomAccess().getRule();
+	}
+
+	//PropertyFillerSignedIntegerRange returns datamart::PropertyFillerSignedIntegerRange:
+	//	{datamart::PropertyFillerSignedIntegerRange} "filler-signed-integer range" ((beginRange=SINT |
+	//	beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=SINT |
+	//	endRangeRef=[entity::LEntityAttribute]))? ("round to" rounded=INT)?;
+	public PropertyFillerSignedIntegerRangeElements getPropertyFillerSignedIntegerRangeAccess() {
+		return pPropertyFillerSignedIntegerRange;
+	}
+	
+	public ParserRule getPropertyFillerSignedIntegerRangeRule() {
+		return getPropertyFillerSignedIntegerRangeAccess().getRule();
+	}
+
+	//PropertyFillerSignedIntegerRandom returns datamart::PropertyFillerSignedIntegerRandom:
+	//	"filler-signed-integer random" "(" items+=SINT+ ")";
+	public PropertyFillerSignedIntegerRandomElements getPropertyFillerSignedIntegerRandomAccess() {
+		return pPropertyFillerSignedIntegerRandom;
+	}
+	
+	public ParserRule getPropertyFillerSignedIntegerRandomRule() {
+		return getPropertyFillerSignedIntegerRandomAccess().getRule();
+	}
+
+	//PropertyFillerTextRandom returns datamart::PropertyFillerTextRandom:
+	//	"filler-text random" "(" items+=STRING+ ")";
+	public PropertyFillerTextRandomElements getPropertyFillerTextRandomAccess() {
+		return pPropertyFillerTextRandom;
+	}
+	
+	public ParserRule getPropertyFillerTextRandomRule() {
+		return getPropertyFillerTextRandomAccess().getRule();
+	}
+
+	//PropertyFillerTextParagraphs returns datamart::PropertyFillerTextParagraphs:
+	//	{datamart::PropertyFillerTextParagraphs} "filler-text paragraps" count=INT?;
+	public PropertyFillerTextParagraphsElements getPropertyFillerTextParagraphsAccess() {
+		return pPropertyFillerTextParagraphs;
+	}
+	
+	public ParserRule getPropertyFillerTextParagraphsRule() {
+		return getPropertyFillerTextParagraphsAccess().getRule();
+	}
+
+	//PropertyFillerTextSentences returns datamart::PropertyFillerTextSentences:
+	//	{datamart::PropertyFillerTextSentences} "filler-text sentences" count=INT?;
+	public PropertyFillerTextSentencesElements getPropertyFillerTextSentencesAccess() {
+		return pPropertyFillerTextSentences;
+	}
+	
+	public ParserRule getPropertyFillerTextSentencesRule() {
+		return getPropertyFillerTextSentencesAccess().getRule();
+	}
+
+	//PropertyFillerTextWords returns datamart::PropertyFillerTextWords:
+	//	{datamart::PropertyFillerTextWords} "filler-text words" count=INT?;
+	public PropertyFillerTextWordsElements getPropertyFillerTextWordsAccess() {
+		return pPropertyFillerTextWords;
+	}
+	
+	public ParserRule getPropertyFillerTextWordsRule() {
+		return getPropertyFillerTextWordsAccess().getRule();
+	}
+
+	//PropertyFillerUnsignedDoubleRange returns datamart::PropertyFillerUnsignedDoubleRange:
+	//	"filler-unsigned-double range" ((beginRange=UnsignedNumber | beginRangeRef=[entity::LEntityAttribute])?
+	//	"up to and including" (endRange=UnsignedNumber | endRangeRef=[entity::LEntityAttribute]))? "with" decimals=INT
+	//	"decimals" ("round to" rounded=UnsignedNumber)?;
+	public PropertyFillerUnsignedDoubleRangeElements getPropertyFillerUnsignedDoubleRangeAccess() {
+		return pPropertyFillerUnsignedDoubleRange;
+	}
+	
+	public ParserRule getPropertyFillerUnsignedDoubleRangeRule() {
+		return getPropertyFillerUnsignedDoubleRangeAccess().getRule();
+	}
+
+	//PropertyFillerUnsignedDoubleRandom returns datamart::PropertyFillerUnsignedDoubleRandom:
+	//	"filler-unsigned-double random" "(" items+=UnsignedNumber+ ")";
+	public PropertyFillerUnsignedDoubleRandomElements getPropertyFillerUnsignedDoubleRandomAccess() {
+		return pPropertyFillerUnsignedDoubleRandom;
+	}
+	
+	public ParserRule getPropertyFillerUnsignedDoubleRandomRule() {
+		return getPropertyFillerUnsignedDoubleRandomAccess().getRule();
+	}
+
+	//PropertyFillerUnsignedIntegerRange returns datamart::PropertyFillerUnsignedIntegerRange:
+	//	{datamart::PropertyFillerUnsignedIntegerRange} "filler-unsigned-integer range" ((beginRange=INT |
+	//	beginRangeRef=[entity::LEntityAttribute])? "up to and including" (endRange=INT |
+	//	endRangeRef=[entity::LEntityAttribute]))? ("round to" rounded=INT)?;
+	public PropertyFillerUnsignedIntegerRangeElements getPropertyFillerUnsignedIntegerRangeAccess() {
+		return pPropertyFillerUnsignedIntegerRange;
+	}
+	
+	public ParserRule getPropertyFillerUnsignedIntegerRangeRule() {
+		return getPropertyFillerUnsignedIntegerRangeAccess().getRule();
+	}
+
+	//PropertyFillerUnsignedIntegerRandom returns datamart::PropertyFillerUnsignedIntegerRandom:
+	//	"filler-unsigned-integer random" "(" items+=INT+ ")";
+	public PropertyFillerUnsignedIntegerRandomElements getPropertyFillerUnsignedIntegerRandomAccess() {
+		return pPropertyFillerUnsignedIntegerRandom;
+	}
+	
+	public ParserRule getPropertyFillerUnsignedIntegerRandomRule() {
+		return getPropertyFillerUnsignedIntegerRandomAccess().getRule();
+	}
+
+	//SignedNumber returns ecore::EDouble:
+	//	"-"? UnsignedNumber;
+	public SignedNumberElements getSignedNumberAccess() {
+		return pSignedNumber;
+	}
+	
+	public ParserRule getSignedNumberRule() {
+		return getSignedNumberAccess().getRule();
+	}
+
+	//UnsignedNumber returns ecore::EDouble:
+	//	INT ("." INT)?;
+	public UnsignedNumberElements getUnsignedNumberAccess() {
+		return pUnsignedNumber;
+	}
+	
+	public ParserRule getUnsignedNumberRule() {
+		return getUnsignedNumberAccess().getRule();
+	}
+
+	//SINT returns ecore::EInt:
+	//	"-"? INT;
+	public SINTElements getSINTAccess() {
+		return pSINT;
+	}
+	
+	public ParserRule getSINTRule() {
+		return getSINTAccess().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.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/validation/AbstractDatamartDSLValidator.java b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/validation/AbstractDatamartDSLValidator.java
new file mode 100644
index 0000000..ac1cde8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src-gen/org/eclipse/osbp/xtext/datamartdsl/validation/AbstractDatamartDSLValidator.java
@@ -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
+ * 
+ */
+package org.eclipse.osbp.xtext.datamartdsl.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractDatamartDSLValidator 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/datamartdsl/DatamartDSL"));
+	    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.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/Activator.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/Activator.java
new file mode 100644
index 0000000..61b9dfc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/Activator.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.datamartdsl;
+
+
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The Class Activator.
+ */
+public class Activator implements BundleActivator {
+
+	/** The context. */
+	private static BundleContext context;
+
+	/**
+	 * Gets the context.
+	 *
+	 * @return the context
+	 */
+	public 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.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSL.xtext b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSL.xtext
new file mode 100644
index 0000000..5803378
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSL.xtext
@@ -0,0 +1,317 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2015 - 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
+ * 	   Jörg Riegel - ongoing development
+ * 
+ */
+grammar org.eclipse.osbp.xtext.datamartdsl.DatamartDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+
+import "http://osbp.eclipse.org/xtext/datamartdsl/DatamartDSL" as datamart
+
+import "http://osbp.eclipse.org/xtext/cubedsl/CubeDSL" as cube
+import "http://osbp.eclipse.org/xtext/authorizationdsl/AuthorizationDSL" as authorization
+import "http://osbp.eclipse.org/dsl/common/types/v1" as types
+import "http://osbp.eclipse.org/dsl/entity/v1" as entity
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+
+DatamartModel returns datamart::DatamartModel:
+		packages+=DatamartPackage*;
+
+DatamartPackage returns datamart::DatamartPackage:
+	{datamart::DatamartPackage} 'package' name=QualifiedName 
+	('{' (imports+=DatamartImport)* (definitions+=DatamartDefinition)* '}' )?;
+
+DatamartDefinition returns datamart::DatamartDefinition:
+	'datamart' name=ID (description?='described by' descriptionValue=TRANSLATABLESTRING)?
+	('for' '{' (roles+=DatamartRole)* '}')?
+	'using' source=DatamartSource;  
+
+DatamartRole returns datamart::DatamartRole:
+	'role' assignedRole=[authorization::Role];
+	
+DatamartSource returns datamart::DatamartSource:
+	DatamartCube | DatamartEntity | DatamartTask;
+	
+DatamartTask returns datamart::DatamartTask:
+	'task' taskQuery=TaskQueryTopicEnum 
+	('columns' '{' columns+=DatamartColumn* '}')?  
+	('conditions' '{' conditions+=DatamartCondition* '}')? ;
+
+DatamartColumn returns datamart::DatamartColumn:
+	'column' columnRef=TaskQueryColumnEnum;
+	
+DatamartTaskFilter returns datamart::DatamartTaskFilter:
+	'filter' filterRef=TaskFilterEnum;
+		
+DatamartCube returns datamart::DatamartCube:
+	'cube' cubeRef=[cube::CubeType]  (nonEmpty?='nonempty values')?	
+	'{' axisslicer+=DatamartCubeElement* '}';
+ 
+DatamartReference returns datamart::DatamartReference:
+	'join' ref=[entity::LEntityReference];
+
+//DotExpression returns datamart::Ref:
+//    EntityRef ({datamart::DotExpression.ref=current}  "." 
+//    	tail=[entity::LEntityReference]
+//    )*;
+// 
+//EntityRef returns datamart::Ref:
+//    {datamart::EntityRef} entity=[entity::LEntity]; 
+
+DatamartEntity returns datamart::DatamartEntity:
+	'entity' entityRef=[entity::LEntity] (tracking?='tracking')? '{'
+		('navigation' '{' navigations+=DatamartNavigation* '}')? 
+		('properties' '{' properties+=DatamartProperty* '}')? 
+		('conditions' '{' conditions+=DatamartCondition* '}')?
+		('ordering' '{' ordering+=DatamartOrder* '}')?
+ 		('filler rows' fillerMinCountRows=INT 'to' fillerMaxCountRows=INT '{' fillerDatas+=PropertyFillerData* '}')?		 
+	'}';
+
+DatamartNavigation returns datamart::DatamartNavigation:
+	DatamartOwner | DatamartMember;
+	
+DatamartOwner returns datamart::DatamartOwner:
+	'many to one' joinRef=DatamartReference 'to' datamartEntity=DatamartEntity;
+	
+DatamartMember returns datamart::DatamartMember:
+	'one to many' joinRef=DatamartReference 'to' datamartEntity=DatamartEntity;
+
+DatamartProperty returns datamart::DatamartProperty:
+	'property' propertyRef=[entity::LEntityAttribute] ((aggregated?='aggregate' aggregate=SqlAggregationEnum)? & (placed?='on axis' axis=AxisEnum)? & (scaled?='scale' scale=ValueScaleEnum)?);
+
+DatamartCondition returns datamart::DatamartCondition:
+	'condition' condition=DatamartDisjunction;
+
+DatamartOrder returns datamart::DatamartOrder:
+	'order' orderBy=[entity::LEntityAttribute] orderHow=OrderEnum;
+
+DatamartDisjunction returns datamart::Expression: 
+	DatamartConjunction (({datamart::Disjunction.left=current} 'or') right=DatamartConjunction)*;
+
+DatamartConjunction returns datamart::Expression: 
+	DatamartConditionalExpression (({datamart::Conjunction.left=current} 'and') right=DatamartConditionalExpression)*;
+	
+DatamartConditionalExpression returns datamart::Expression:
+	DatamartOperand (({datamart::ConditionalExpression.left=current} operator=OperatorEnum) right=DatamartOperand)*;
+
+DatamartOperand returns datamart::Expression: 
+	DatamartValue | '(' DatamartDisjunction ')';
+
+DatamartValue returns datamart::Expression: 
+	numberValue=Number|stringValue=STRING|((filtered?='filtered' (optional?='optional')?)| selected?='selected')|DatamartProperty|DatamartTaskFilter|DatamartColumn;
+
+DatamartCubeElement returns datamart::DatamartCubeElement:
+	DatamartAxis|DatamartSlicer|DatamartDefineDerivedMeasure;
+	
+DatamartDefineDerivedMeasure returns datamart::DatamartDefineDerivedMeasure:
+	'derive' name=TRANSLATABLEID 'from' derivedElement+=DatamartAddition*;
+
+DatamartAddition returns datamart::Expression: 
+	DatamartMultiplication (({datamart::Addition.left=current} '+'| {datamart::Subtraction.left=current} '-') right=DatamartMultiplication)*;
+
+DatamartMultiplication returns datamart::Expression: 
+	DatamartPrimary (({datamart::Multiplication.left=current} '*' | {datamart::Division.left=current} '/') right=DatamartPrimary)*;
+	
+DatamartPrimary returns datamart::Expression: 
+	DatamartNumberOrElement | '(' DatamartAddition ')';
+
+DatamartNumberOrElement returns datamart::Expression: 
+	value=Number | DatamartMeasure | DatamartDerivedMeasure | DatamartMemberTuple | DatamartAggregation;
+	
+DatamartMemberTuple returns datamart::Expression:
+	((function=DatamartFunction | function = DatamartParameterFunction) 'of')? hierarchy=DatamartHierarchy ({datamart::DatamartMemberTuple.left = current} 'over' right=DatamartMeasure);
+	
+DatamartFunction returns datamart::DatamartFunction:
+	function=FunctionEnum;
+
+DatamartParameterFunction returns datamart::DatamartParameterFunction:
+	function=ParameterFunctionEnum '(' parameter=DatamartFunctionIntParameter ')';
+	
+DatamartFunctionIntParameter returns datamart::DatamartFunctionIntParameter:
+	value=INT;
+	
+DatamartSetFunction returns datamart::DatamartSetFunction:
+	setFunction=SetFunctionEnum;
+	
+DatamartSetParameterFunction returns datamart::DatamartSetParameterFunction:
+	setFunction=SetParameterFunctionEnum '(' parameter=DatamartFunctionIntParameter ')';
+		
+DatamartSetAggregationFunction returns datamart::DatamartSetAggregationFunction:
+	aggregation=SetAggregationEnum '(' parameter=DatamartFunctionIntParameter ')';
+
+DatamartSetTuple returns datamart::Expression:
+	(setFunction = DatamartSetFunction | setFunction = DatamartSetParameterFunction) ({datamart::DatamartSetTuple.left = current} 'of' right=DatamartHierarchy);
+	
+DatamartAggregationFunction returns datamart::DatamartAggregationFunction:
+	aggregation=AggregationEnum;
+
+DatamartAggregation returns datamart::Expression:
+	aggregation=DatamartAggregationFunction 'of' (set=DatamartSetTuple | set=DatamartHierarchy) ({datamart::DatamartAggregation.left = current} 'over' right=DatamartMeasure);
+	
+DatamartSetAggregation returns datamart::Expression:
+	aggregation=DatamartSetAggregationFunction 'of' (set=DatamartSetTuple | set=DatamartHierarchy) ({datamart::DatamartSetAggregation.left = current} 'over' right=DatamartMeasure);
+
+DatamartSlicer returns datamart::DatamartSlicer:
+	'slicer' element=DatamartElement;
+
+DatamartAxis returns datamart::DatamartAxis:
+	'axis' name=AxisEnum '{' elements+=DatamartElement* '}';
+
+DatamartElement returns datamart::DatamartElement:
+	DatamartHierarchy|DatamartMeasure|DatamartDerivedMeasure|DatamartSetAggregation;
+
+DatamartDerivedMeasure returns datamart::DatamartDerivedMeasure:
+	'derived' derivedRef=[datamart::DatamartDefineDerivedMeasure] (scaled?='scale' scale=ValueScaleEnum)?;
+	
+DatamartMeasure returns datamart::DatamartMeasure:
+	'measure' measureRef=[cube::CubeMeasure] (scaled?='scale' scale=ValueScaleEnum)?;
+
+DatamartHierarchy returns datamart::DatamartHierarchy:
+	'hierarchy' hierarchyRef=[cube::CubeHierarchy] (defaultMember?='default')? (allMember?='condensed')? (allLevels?='exploded')? ('level' levelRef=[cube::CubeLevel] (filtered?='filtered'| selected?='selected')?)? (all?='detailed' (except?='except' exceptRef=[cube::CubeLevel])? (ordered?='ordered by' orderRef=(DatamartMeasure|DatamartDerivedMeasure) (descending?='descending')?)?)?;
+
+DatamartImport returns types::LImport:
+	'import' importedNamespace=DatamartQualifiedNameWithWildCard;
+
+DatamartQualifiedNameWithWildCard:
+	QualifiedName ('.' '*')?;
+	
+QualifiedName:
+  ValidID (=>'.' ValidID)*;
+  
+ValidID:
+	ID;
+	
+TRANSLATABLESTRING:
+	STRING;
+	
+TRANSLATABLEID:
+	ID;
+
+enum AxisEnum returns datamart::AxisEnum:
+	 DEFAULT='default' | COLUMNS='columns' | ROWS='rows' | PAGES='pages' | SECTIONS='sections' | CHAPTERS='chapters' /* | AXIS(<index>)*/;
+	 
+enum FunctionEnum returns datamart::FunctionEnum:
+	PREVMEMBER='previous' | NEXTMEMBER='next' | FIRSTCHILD='first' | LASTCHILD='last';
+	
+enum ParameterFunctionEnum returns datamart::ParameterFunctionEnum:
+	LAG='lag' | LEAD='lead';
+	 
+enum SetFunctionEnum returns datamart::SetFunctionEnum:
+	YTD='year-to-date' | PERIODSTODATE='periods' /*| ALLMEMBERS='all' | ASCENDANTS='ascendants'*/;
+	
+enum SetParameterFunctionEnum returns datamart::SetParameterFunctionEnum:
+	TAIL='tail' | HEAD='head';	
+	
+enum SetAggregationEnum returns datamart::SetAggregationEnum:
+	TOPCOUNT='topcount' | TOPSUM='topsummation' | TOPPERCENT='toppercentage' | BOTTOMCOUNT='bottomcount' | BOTTOMSUM='bottomsummation' | BOTTOMPERCENT='bottompercentage';
+
+enum AggregationEnum returns datamart::AggregationEnum:
+	AVG='average' | SUM='summation' | AGGREGATE='aggregate' | STDDEV='deviation';
+	
+enum OperatorEnum returns datamart::OperatorEnum:
+	EQUALS='=' | LESS='<' | GREATER=">" | LESSEQUAL='<=' | GREATEREQUAL='>=' | LIKE='like';
+
+enum SqlAggregationEnum returns datamart::SqlAggregationEnum:
+	AVG='average' | SUM='summation' | COUNT='count';
+	
+enum ValueScaleEnum returns datamart::ValueScaleEnum:
+	AXIS='group1' | AXIS2='group2' | AXIS3='group3' | AXIS4='group4' | AXIS5='group5' | AXIS6='group6' | AXIS7='group7' | AXIS8='group8' | AXIS9='group9';
+	
+enum TaskQueryTopicEnum returns datamart::TaskQueryTopicEnum:
+	Q1='BusinessAdministrator' | Q2='PotentialOwner' | Q3='Recipient' | Q4='TaskInitiator' | Q5='TaskStakeholder' | Q6='ExcludedOwner';
+
+enum TaskQueryColumnEnum returns datamart::TaskQueryColumnEnum:
+	P1='Name' | P2='Priority' | P3='Status' | P4='Subject' | P5='Description' | P6='ExpirationTime' | P7='CreatedOn' | P8='CreatedBy' | P9='ActivationTime' | 
+	P10='ActualOwner' | P11='TaskId' | P12 = 'ProcessId' | P13='ProcessInstanceId' | P14='ProcessSessionId';
+	
+enum TaskFilterEnum returns datamart::TaskFilterEnum:
+	F1='Groups' | F2='Users';
+
+enum OrderEnum returns datamart::OrderEnum:
+	ASC='ascending' | DESC='descending';
+	
+PropertyFillerData returns datamart::PropertyFillerData:
+	'fill' propertyRef=[entity::LEntityAttribute] 'with' fillerType=PropertyFillerType;
+
+PropertyFillerType returns datamart::PropertyFillerType:
+	  PropertyFillerDateFuture | PropertyFillerDatePast
+    | PropertyFillerDateRange
+	| PropertyFillerSignedDoubleRange | PropertyFillerSignedDoubleRandom
+    | PropertyFillerSignedIntegerRange | PropertyFillerSignedIntegerRandom
+	| PropertyFillerTextRandom
+    | PropertyFillerTextParagraphs | PropertyFillerTextSentences | PropertyFillerTextWords
+	| PropertyFillerUnsignedDoubleRange | PropertyFillerUnsignedDoubleRandom
+    | PropertyFillerUnsignedIntegerRange | PropertyFillerUnsignedIntegerRandom
+	;
+
+PropertyFillerDateFuture returns datamart::PropertyFillerDateFuture:
+	'filler-date future' dateFutureYears=INT 'years';
+
+PropertyFillerDatePast returns datamart::PropertyFillerDatePast:
+	'filler-date past' datePastYears=INT 'years';
+
+PropertyFillerDateRange returns datamart::PropertyFillerDateRange:
+	'filler-date range' dateBeginYears=SINT 'up to and including' dateEndYears=SINT 'years';
+
+PropertyFillerSignedDoubleRange returns datamart::PropertyFillerSignedDoubleRange:
+	'filler-signed-double range' 
+		((beginRange=SignedNumber | beginRangeRef=[entity::LEntityAttribute])? 'up to and including' (endRange=SignedNumber|endRangeRef=[entity::LEntityAttribute]))?
+		'with' decimals=INT 'decimals' 
+		('round to' rounded=UnsignedNumber)?;
+	
+PropertyFillerSignedDoubleRandom returns datamart::PropertyFillerSignedDoubleRandom:
+	'filler-signed-double random' '(' (items+=SignedNumber)+ ')';
+
+PropertyFillerSignedIntegerRange returns datamart::PropertyFillerSignedIntegerRange:
+	{datamart::PropertyFillerSignedIntegerRange} 'filler-signed-integer range' 
+		((beginRange=SINT | beginRangeRef=[entity::LEntityAttribute])? 'up to and including' (endRange=SINT|endRangeRef=[entity::LEntityAttribute]))?
+		('round to' rounded=INT)?;
+	
+PropertyFillerSignedIntegerRandom returns datamart::PropertyFillerSignedIntegerRandom:
+	'filler-signed-integer random' '(' (items+=SINT)+ ')';
+	
+PropertyFillerTextRandom returns datamart::PropertyFillerTextRandom:
+	'filler-text random' '(' (items+=STRING)+ ')';
+
+PropertyFillerTextParagraphs returns datamart::PropertyFillerTextParagraphs:
+	{datamart::PropertyFillerTextParagraphs} 'filler-text paragraps' (count=INT)?;
+
+PropertyFillerTextSentences returns datamart::PropertyFillerTextSentences:
+	{datamart::PropertyFillerTextSentences} 'filler-text sentences' (count=INT)?;
+
+PropertyFillerTextWords returns datamart::PropertyFillerTextWords:
+	{datamart::PropertyFillerTextWords} 'filler-text words' (count=INT)?;
+
+PropertyFillerUnsignedDoubleRange returns datamart::PropertyFillerUnsignedDoubleRange:
+	'filler-unsigned-double range' 
+		((beginRange=UnsignedNumber | beginRangeRef=[entity::LEntityAttribute])? 'up to and including' (endRange=UnsignedNumber|endRangeRef=[entity::LEntityAttribute]))?
+		'with' decimals=INT 'decimals' 
+		('round to' rounded=UnsignedNumber)?;
+	
+PropertyFillerUnsignedDoubleRandom returns datamart::PropertyFillerUnsignedDoubleRandom:
+	'filler-unsigned-double random' '(' (items+=UnsignedNumber)+ ')';
+
+PropertyFillerUnsignedIntegerRange returns datamart::PropertyFillerUnsignedIntegerRange:
+	{datamart::PropertyFillerUnsignedIntegerRange} 'filler-unsigned-integer range' 
+		((beginRange=INT | beginRangeRef=[entity::LEntityAttribute])? 'up to and including' (endRange=INT|endRangeRef=[entity::LEntityAttribute]))?
+		('round to' rounded=INT)?;
+	
+PropertyFillerUnsignedIntegerRandom returns datamart::PropertyFillerUnsignedIntegerRandom:
+	'filler-unsigned-integer random' '(' (items+=INT)+ ')';
+
+SignedNumber returns ecore::EDouble:
+	('-')? UnsignedNumber;
+
+UnsignedNumber returns ecore::EDouble:
+	INT ('.' (INT))?;
+
+SINT returns ecore::EInt:
+	('-')? INT;
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..f18fed0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLBundleSpaceRuntimeModule.java
@@ -0,0 +1,64 @@
+/**
+ *                                                                            
+ *  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.datamartdsl;
+
+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;
+
+/**
+ * The Class DatamartDSLBundleSpaceRuntimeModule.
+ */
+@SuppressWarnings("restriction")
+public class DatamartDSLBundleSpaceRuntimeModule extends
+		DatamartDSLRuntimeModule {
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindIJvmTypeProvider$Factory()
+	 */
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindAbstractTypeScopeProvider()
+	 */
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+	/**
+	 * Bind i type loader factory.
+	 *
+	 * @return the class<? extends i type loader factory>
+	 */
+	public Class<? extends ITypeLoaderFactory> bindITypeLoaderFactory() {
+		return TypeLoaderFactory.class;
+	}
+
+	/**
+	 * I type loader provider.
+	 *
+	 * @return the class<? extends i type loader provider>
+	 */
+	public Class<? extends ITypeLoaderProvider> ITypeLoaderProvider() {
+		return TypeLoaderProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..86e7577
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLBundleSpaceStandaloneSetup.java
@@ -0,0 +1,55 @@
+/**
+ *                                                                            
+ *  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.datamartdsl;
+
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * The Class DatamartDSLBundleSpaceStandaloneSetup.
+ */
+@SuppressWarnings("restriction")
+public class DatamartDSLBundleSpaceStandaloneSetup extends
+		DatamartDSLStandaloneSetup {
+	
+	/**
+	 * Do setup.
+	 */
+	public static void doSetup() {
+		new DatamartDSLBundleSpaceStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLStandaloneSetupGenerated#createInjectorAndDoEMFRegistration()
+	 */
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.DatamartDSLStandaloneSetupGenerated#createInjector()
+	 */
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(new DatamartDSLBundleSpaceRuntimeModule());
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLRuntimeModule.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLRuntimeModule.java
new file mode 100644
index 0000000..f405eca
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLRuntimeModule.java
@@ -0,0 +1,127 @@
+/**
+ *                                                                            
+ *  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.datamartdsl;
+
+import javax.inject.Singleton;
+
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+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 com.google.inject.Binder;
+
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartModelGenerator;
+import org.eclipse.osbp.xtext.datamartdsl.scoping.DatamartDSLScopeProvider;
+import org.eclipse.osbp.xtext.datamartdsl.valueconverter.DatamartQualifiedNameProvider;
+import org.eclipse.osbp.xtext.datamartdsl.valueconverter.DatamartValueConverterService;
+import org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+public class DatamartDSLRuntimeModule extends
+		org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule {
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindIScopeProvider()
+	 */
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return DatamartDSLScopeProvider.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindIGenerator()
+	 */
+	@Override
+	public Class<? extends IGenerator> bindIGenerator() {
+		return DatamartModelGenerator.class;
+	}
+
+	/**
+	 * Only required, if fqn can not be created by appending the names of the
+	 * semantic elements up the hierarchy.
+	 *
+	 * @return the class<? extends org.eclipse.xtext.naming. i qualified name
+	 *         provider>
+	 */
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return DatamartQualifiedNameProvider.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindIValueConverterService()
+	 */
+	@Override
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return DatamartValueConverterService.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#configure(com.google.inject.Binder)
+	 */
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(IOutputConfigurationProvider.class)
+				.to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#configureSerializerIScopeProvider(com.google.inject.Binder)
+	 */
+	@Override
+	public void configureSerializerIScopeProvider(Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+				.annotatedWith(
+						org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class)
+				.to(DatamartDSLScopeProvider.class);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindXbaseBatchScopeProvider()
+	 */
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return DatamartDSLScopeProvider.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindXtextResource()
+	 */
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.datamartdsl.AbstractDatamartDSLRuntimeModule#bindILinker()
+	 */
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return LazyJvmTypeLinker.class;
+	}
+
+	/**
+	 * Bind serializer i transient value service.
+	 *
+	 * @return the class<? extends org.eclipse.xtext.serializer.sequencer. i
+	 *         transient value service>
+	 */
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return LazyJvmTypeTransientValueService.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLStandaloneSetup.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLStandaloneSetup.java
new file mode 100644
index 0000000..c0ed266
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSLStandaloneSetup.java
@@ -0,0 +1,30 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 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.datamartdsl;
+
+/**
+ * Initialization support for running Xtext languages without equinox extension
+ * registry.
+ */
+public class DatamartDSLStandaloneSetup extends DatamartDSLStandaloneSetupGenerated{
+
+	/**
+	 * Do setup.
+	 */
+	public static void doSetup() {
+		new DatamartDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/GenerateDatamartDSL.mwe2 b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/GenerateDatamartDSL.mwe2
new file mode 100644
index 0000000..f35d8a3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/GenerateDatamartDSL.mwe2
@@ -0,0 +1,172 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.GenerateDatamartDSL
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.osbp.dsl.mwe.*
+
+var projectName = "org.eclipse.osbp.xtext.datamartdsl"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/datamartdsl/DatamartDSL.xtext"
+var fileExtensions = "datamart"
+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.datamartdsl/model/DatamartDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage"
+		
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.authorizationdsl/model/AuthorizationDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.authorizationdsl.AuthorizationDSLPackage"
+		
+		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"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+		
+		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 = 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 {
+				// @see https://github.com/osbp/osbp-doc/blob/master/org.eclipse.osbp.doc.dsl/src/org.eclipse.osbp/doc/dsl/grammar/GenerateOSBPDocGrammar.mwe2
+    		  	options = {
+    		//      backtrack = true
+    				classSplitting=true
+    				fieldsPerClass="100"
+    				methodsPerClass="100"
+    		  	}
+    		}
+    
+    		// 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.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/XcoreResourceFactory.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/XcoreResourceFactory.java
new file mode 100644
index 0000000..4ba8b7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/XcoreResourceFactory.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.datamartdsl;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xcore.resource.XcoreResource;
+
+/**
+ * A factory for creating XcoreResource objects.
+ */
+public class XcoreResourceFactory implements Resource.Factory {
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.emf.ecore.resource.Resource.Factory#createResource(org.eclipse.emf.common.util.URI)
+	 */
+	@Override
+	public Resource createResource(URI uri) {
+		XcoreResource resource = new XcoreResource();
+		resource.setURI(uri);
+		return resource;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/formatting/DatamartDSLFormatter.xtend b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/formatting/DatamartDSLFormatter.xtend
new file mode 100644
index 0000000..d957175
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/formatting/DatamartDSLFormatter.xtend
@@ -0,0 +1,67 @@
+/*
+ *
+ *  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.datamartdsl.formatting
+
+import com.google.inject.Inject
+import org.eclipse.osbp.utils.xtext.GenericFormatter
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
+import org.eclipse.xtext.formatting.impl.FormattingConfig
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
+import org.eclipse.xtext.ParserRule
+import org.eclipse.xtext.GrammarUtil
+
+//import org.eclipse.osbp.xtext.datamartdsl.services.DatamartDSLGrammarAccess
+
+/**
+ * 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 DatamartDSLFormatter extends AbstractDeclarativeFormatter {
+
+//	@Inject extension DatamartDSLGrammarAccess
+	@Inject XtypeGrammarAccess grammarAccess
+
+	override protected void configureFormatting(FormattingConfig c) {
+		val genericFormatter	         = new GenericFormatter()
+		var ParserRule referenceDef      = GrammarUtil.findRuleForName( grammar.grammar, "DatamartReference"             ) as ParserRule
+		var ParserRule slicerDef         = GrammarUtil.findRuleForName( grammar.grammar, "DatamartSlicer"                ) as ParserRule
+		var ParserRule hierarchyDef      = GrammarUtil.findRuleForName( grammar.grammar, "DatamartHierarchy"             ) as ParserRule
+		var ParserRule measureDef        = GrammarUtil.findRuleForName( grammar.grammar, "DatamartMeasure"               ) as ParserRule
+		var ParserRule numOrElementDef   = GrammarUtil.findRuleForName( grammar.grammar, "DatamartNumberOrElement"       ) as ParserRule
+		var ParserRule conditionDef      = GrammarUtil.findRuleForName( grammar.grammar, "DatamartCondition"             ) as ParserRule
+		var ParserRule condExprDef       = GrammarUtil.findRuleForName( grammar.grammar, "DatamartConditionalExpression" ) as ParserRule
+//		var ParserRule propertyDef       = GrammarUtil.findRuleForName( grammar.grammar, "DatamartProperty"              ) as ParserRule
+//		var ParserRule DerivedMeasureDef = GrammarUtil.findRuleForName( grammar.grammar, "DatamartDerivedMeasure"        ) as ParserRule
+//		var ParserRule expressionDef     = GrammarUtil.findRuleForName( grammar.grammar, "Expression"                    ) as ParserRule
+//		var ParserRule cubeElementDef    = GrammarUtil.findRuleForName( grammar.grammar, "DatamartCubeElement"           ) as ParserRule
+//		var ParserRule paramFuncDef      = GrammarUtil.findRuleForName( grammar.grammar, "DatamartParameterFunction"     ) as ParserRule
+
+		//	dsl-specific formatting:
+		c.setNoLinewrap().before ( referenceDef    )
+//		c.setNoLinewrap().before ( expressionDef   )
+		c.setNoLinewrap().between( slicerDef   , hierarchyDef )
+//		c.setNoLinewrap().between( conditionDef, propertyDef  )
+		c.setNoLinewrap().between( conditionDef, condExprDef  )
+		c.setNoLinewrap().between( hierarchyDef, measureDef   )
+		c.setNoLinewrap().before ( numOrElementDef )
+
+		//	common formatting:
+		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "DatamartDefinition", "DatamartImport" )
+		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartDSLJvmModelInferrer.xtend
new file mode 100644
index 0000000..7dcb364
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartDSLJvmModelInferrer.xtend
@@ -0,0 +1,2936 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.jvmmodel
+
+import java.sql.Connection
+import java.util.ArrayList
+import java.util.HashMap
+import java.util.HashSet
+import java.util.List
+import java.util.Locale
+import java.util.Map
+import java.util.Set
+import javax.inject.Inject
+import mondrian.rolap.RolapConnection
+import org.apache.commons.lang3.StringUtils
+import org.eclipse.emf.common.util.EList
+import org.eclipse.osbp.bpm.api.IBPMEngine
+import org.eclipse.osbp.bpm.api.IBPMTaskClient
+import org.eclipse.osbp.dsl.common.datatypes.IDto
+import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension
+import org.eclipse.osbp.dsl.entity.xtext.extensions.NamingExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+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.LBean
+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.persistence.IPersistenceService
+import org.eclipse.osbp.preferences.EnumDatabaseVendor
+import org.eclipse.osbp.ui.api.datamart.IDataMart
+import org.eclipse.osbp.ui.api.datamart.IDualData
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService
+import org.eclipse.osbp.ui.api.user.IUser
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService
+import org.eclipse.osbp.utils.common.EntityUtils
+import org.eclipse.osbp.utils.common.IEntityIdModificationListenerView
+import org.eclipse.osbp.utils.constants.GeneratorConstants
+import org.eclipse.osbp.utils.entityhelper.DataType
+import org.eclipse.osbp.ui.api.datamart.IDataMart.EType
+import org.eclipse.osbp.utils.fillertext.FillerTextProvider
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntity
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityAttribute
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityReference
+import org.eclipse.osbp.xtext.authorizationdsl.RolePropertyEnum
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension
+import org.eclipse.osbp.xtext.cubedsl.CubePackage
+import org.eclipse.osbp.xtext.datamart.common.ACubeDatamart
+import org.eclipse.osbp.xtext.datamart.common.AEntityDatamart
+import org.eclipse.osbp.xtext.datamart.common.ATaskDatamart
+import org.eclipse.osbp.xtext.datamart.common.DatamartDefinitionUtil
+import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet
+import org.eclipse.osbp.xtext.datamart.common.sql.FillerTextResultSet
+import org.eclipse.osbp.xtext.datamartdsl.Addition
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage
+import org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction
+import org.eclipse.osbp.xtext.datamartdsl.Division
+import org.eclipse.osbp.xtext.datamartdsl.Expression
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction
+import org.eclipse.xtext.common.types.JvmAnnotationReference
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmMember
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmVisibility
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.junit.Test
+import org.osgi.service.component.annotations.Component
+import org.osgi.service.component.annotations.Reference
+import org.osgi.service.component.annotations.ReferenceCardinality
+import org.osgi.service.component.annotations.ReferencePolicy
+import org.slf4j.Logger
+
+/**
+ * <p>
+ * This inferrer infers models of extension .datamart and generates code to be used by other dsl. It encapsulates difficult syntax construction
+ * and provides a reflective call interface as well as a data transfer object olap cellSet. 
+ * There are two different approaches: the traditional SQL thru entities and their properties and MDX thru cubes and their measures and stuff.
+ * For SQL the olap cellSet is emulated by appropriate classes and implements NOT ALL features of a MDX filled olap cellSet.
+ * </p>
+ * 
+ * @author Joerg Riegel
+ */
+/**
+ * <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 DatamartDSLJvmModelInferrer extends AbstractModelInferrer {
+
+	/**
+     * convenience API to build and initialize JVM types and their members.
+     */
+	@Inject extension JvmTypesBuilder
+	@Inject extension IQualifiedNameProvider
+	@Inject extension NamingExtensions
+	@Inject extension DatamartModelGenerator generator
+	@Inject extension TypeReferences
+	@Inject extension AnnotationExtension
+    
+	@Inject
+	@Extension
+	private DataType dtType;
+
+	var sqlAliasCounter = <String, Integer>newHashMap
+	var sqlFilterMap = <String, DatamartProperty>newHashMap
+	var sqlGrouping = <String>newArrayList
+	var idMap = <String, LEntityAttribute>newHashMap
+	var datamartDtoMapper = null as String
+	var entityGrouping = new HashMap<String,LEntity>()
+	var ignoreEntityGrouping = false
+	var sqlHasAggregate = false
+	var sqlHasOrder = false
+	var public static String pckgName = null
+	var String binderClassName = ""
+	
+	Locale locale
+	
+	def void generatePckgName(DatamartPackage pckg, IJvmDeclaredTypeAcceptor acceptor) {
+		pckgName = pckg.name
+	}
+	
+	/**
+	 * <p>infer method dispatches the neccessary routines to build fields, setter, getter, constructors and methods of the generated code.</p> 
+	 *
+	 */
+	def dispatch void infer(DatamartPackage datamart, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
+		datamart.generatePckgName(acceptor)
+		
+		// the test main class
+		var cls = datamart.toClass(datamart.name.toString.concat("TestClass"))
+		cls.simpleName = cls.simpleName.toFirstUpper
+		acceptor.accept(cls,
+			[
+				annotations += _annotationTypesBuilder.annotationRef(SuppressWarnings, "serial")
+				packageName = datamart.fullyQualifiedName.toString
+			 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+				it.toTestCalls(datamart)
+			])
+
+		// the service binder class
+		binderClassName = datamart.fullyQualifiedName.toString+"."+datamart.fullyQualifiedName.lastSegment.toFirstUpper+"ServiceBinder"
+		cls = datamart.toClass(datamart.name.toString.concat("ServiceBinder"))
+		cls.simpleName = cls.simpleName.toFirstUpper
+		acceptor.accept(cls,
+			[
+				annotations += _annotationTypesBuilder.annotationRef(SuppressWarnings, "serial")
+				annotations += _annotationTypesBuilder.annotationRef(typeof(Component))
+				
+				packageName = datamart.fullyQualifiedName.toString
+			 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+			 	it.toBinderFields(datamart)
+				it.toBinderOperations(datamart)
+			])
+
+		for (definition : datamart.definitions) {
+			acceptor.accept(definition.toClass(definition.fullyQualifiedName + IDataMart.DATAMART_CLASS_POSTFIX),
+				[
+					annotations += _annotationTypesBuilder.annotationRef(SuppressWarnings, "serial")
+					packageName = datamart.fullyQualifiedName.toString
+				 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+					if (definition.source instanceof DatamartEntity) {
+						superTypes += _typeReferenceBuilder.typeRef(AEntityDatamart)
+					}
+					if (definition.source instanceof DatamartCube) {
+						superTypes += _typeReferenceBuilder.typeRef(ACubeDatamart)
+					}
+					if (definition.source instanceof DatamartTask) {
+						superTypes += _typeReferenceBuilder.typeRef(ATaskDatamart)
+					}
+					it.toFields(definition)
+					it.toGetterSetter(definition)
+					it.toOperations(definition)
+				])
+		}
+	}
+
+	def toTestCalls(JvmGenericType type, DatamartPackage datamart) {
+		var JvmOperation operation
+		for (definition : datamart.definitions) {
+			operation = definition.toMethod("test".concat(definition.name), _typeReferenceBuilder.typeRef(Void::TYPE),
+				[
+					annotations += _annotationTypesBuilder.annotationRef(Test)
+					body = [append('''«definition.getAllTestcalls»''')]
+				])
+			type.members += operation
+		}
+	}
+
+	def getAllTestcalls(DatamartDefinition definition) {
+		var body = ""
+		body = '''«body»«definition.name»Datamart.Test«definition.name»();
+'''
+		return body
+	}
+
+	def void toBinderFields(JvmDeclaredType type, DatamartPackage datamart) {
+		var JvmField field = null
+   		// create logger
+		field = datamart.toField("log", _typeReferenceBuilder.typeRef(Logger))[setInitializer([append('''org.slf4j.LoggerFactory.getLogger("servicebinder")''')])]
+   		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		// create persistence service field
+		field = datamart.toField("persistenceService", _typeReferenceBuilder.typeRef(IPersistenceService))
+   		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = datamart.toField("bpmEngine", _typeReferenceBuilder.typeRef(IBPMEngine))
+		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = datamart.toField("userAccessService", _typeReferenceBuilder.typeRef(IUserAccessService))
+		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = datamart.toField("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService))
+		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+	}
+	
+	def void toBinderOperations(JvmDeclaredType type, DatamartPackage datamart) {
+		var JvmOperation operation
+
+		type.members += datamart.toMethod("getPersistenceService", _typeReferenceBuilder.typeRef(IPersistenceService), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append(
+			'''return persistenceService;''')]
+		])
+		type.members += datamart.toMethod("getBpmEngine", _typeReferenceBuilder.typeRef(IBPMEngine), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append(
+			'''return bpmEngine;''')]
+		])
+		type.members += datamart.toMethod("getUserAccessService", _typeReferenceBuilder.typeRef(IUserAccessService), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append(
+			'''return userAccessService;''')]
+		])
+		type.members += datamart.toMethod("getDSLMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append(
+			'''return dslMetadataService;''')]
+		])
+		type.members += datamart.toMethod(bindPersistenceMethod, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Reference))
+			annotationRef.addAnnAttr(datamart, "cardinality", ReferenceCardinality.MANDATORY)
+			annotationRef.addAnnAttr(datamart, "policy", ReferencePolicy.STATIC)
+			annotations += annotationRef
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("persistenceService", _typeReferenceBuilder.typeRef(IPersistenceService))
+			body = [append(
+			'''
+			this.persistenceService = persistenceService;
+			log.debug("Datamart PersistenceService bound");''')]
+		])
+		// unbind persistence service
+		type.members += datamart.toMethod(unbindPersistenceMethod, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("persistenceService", _typeReferenceBuilder.typeRef(IPersistenceService))
+			body = [append(
+			'''
+			this.persistenceService = null;
+			log.debug("Datamart PersistenceService unbound");''')]
+		])
+		// bind bpm service
+		type.members += datamart.toMethod(bindBPMMethod, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Reference))
+			annotationRef.addAnnAttr(datamart, "cardinality", ReferenceCardinality.OPTIONAL)
+			annotationRef.addAnnAttr(datamart, "policy", ReferencePolicy.DYNAMIC)
+			annotations += annotationRef
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("bpmEngine", _typeReferenceBuilder.typeRef(IBPMEngine))
+			body = [append(
+			'''
+			this.bpmEngine = bpmEngine;
+			log.debug("Datamart BPMEngine bound");''')]
+		])
+		// unbind bpm service
+		type.members += datamart.toMethod(unbindBPMMethod, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("bpmEngine", _typeReferenceBuilder.typeRef(IBPMEngine))
+			body = [append(
+			'''
+			this.bpmEngine = null;
+			log.debug("Datamart BPMEngine unbound");''')]
+		])
+		// bind userAccessService
+		type.members += datamart.toMethod(bindUserAccessMethod, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Reference))
+			annotationRef.addAnnAttr(datamart, "cardinality", ReferenceCardinality.MANDATORY)
+			annotationRef.addAnnAttr(datamart, "policy", ReferencePolicy.STATIC)
+			annotations += annotationRef
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("userAccessService", _typeReferenceBuilder.typeRef(IUserAccessService))
+			body = [append(
+			'''
+			this.userAccessService = userAccessService;
+			log.debug("Datamart UserAccessService bound");''')]
+		])
+		// unbind userAccessService
+		type.members += datamart.toMethod(unbindUserAccessMethod, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("userAccessService", _typeReferenceBuilder.typeRef(IUserAccessService))
+			body = [append(
+			'''
+			this.userAccessService = null;
+			log.debug("Datamart UserAccessService unbound");''')]
+		])
+		// bind dslMetadataService
+		type.members += datamart.toMethod(bindDSLMetadataService, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Reference))
+			annotationRef.addAnnAttr(datamart, "cardinality", ReferenceCardinality.MANDATORY)
+			annotationRef.addAnnAttr(datamart, "policy", ReferencePolicy.STATIC)
+			annotations += annotationRef
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService))
+			body = [append(
+			'''
+			this.dslMetadataService = dslMetadataService;
+			log.debug("Datamart DSLMetadataService bound");''')]
+		])
+		// unbind dslMetadataService
+		type.members += datamart.toMethod(unbindDSLMetadataService, _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PUBLIC
+			synchronized = true
+   			parameters += datamart.toParameter("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService))
+			body = [append(
+			'''
+			this.dslMetadataService = null;
+			log.debug("Datamart DSLMetadataService unbound");''')]
+		])
+	}
+	
+	/**
+	 * <p>build the class variables for each datamart definition.</p> 
+	 *
+	 */
+	def void toFields(JvmDeclaredType type, DatamartDefinition definition) {
+		val typesMap = <String, LEntityAttribute>newHashMap
+		var JvmField field = null
+   		// create logger
+		field = definition.toField("log", _typeReferenceBuilder.typeRef(Logger))[setInitializer([append('''org.slf4j.LoggerFactory.getLogger("datamarts")''')])]
+   		field.static = true
+   		field.visibility = JvmVisibility::PRIVATE
+		type.members += field
+		field = definition.toField("filterItems",
+			_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+				_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(IDualData))))[
+			setInitializer([append('''new HashMap<String,ArrayList<IDualData>>()''')])]
+		field.final = true;
+		type.members += field
+		if (definition.source instanceof DatamartCube) {
+			field = definition.toField("statement", _typeReferenceBuilder.typeRef(String))[
+				setInitializer([append('''"«definition.createMDXStatement»"''')])]
+			type.members += field
+			field = definition.toField("connection", _typeReferenceBuilder.typeRef(RolapConnection))[
+				setInitializer([append('''null''')])]
+			type.members += field
+			field = definition.toField("datamartDtoMapper", _typeReferenceBuilder.typeRef(DatamartDtoMapper))[
+				setInitializer([append('''new DatamartDtoMapper()''')])]
+			type.members += field
+		}
+		if (definition.source instanceof DatamartEntity) {
+			field = definition.toField("statements", _typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(String)))[
+				setInitializer([append('''new HashMap<String,String>() «definition.createSQLStatements(typesMap)»''')])]
+			type.members += field
+			field = definition.toField("datamartDtoMapper", _typeReferenceBuilder.typeRef(DatamartDtoMapper))[
+				setInitializer([append('''«datamartDtoMapper»''')])]
+			type.members += field
+			field = definition.toField("connection", _typeReferenceBuilder.typeRef(Connection))[
+				setInitializer([append('''null''')])]
+			type.members += field
+			field = definition.toField("axisMap",
+				_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(Integer),
+					_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(String))))[
+				setInitializer([append('''new HashMap<Integer,ArrayList<String>>() «definition.createAxisMap»''')])]
+			type.members += field
+		}
+		
+		if (definition.source instanceof DatamartTask) {
+			field = definition.toField("axisMap",
+				_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(Integer),
+					_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(String))))[
+				setInitializer([append('''new HashMap<Integer,ArrayList<String>>() «definition.createAxisMap»''')])]
+			type.members += field
+			field = definition.toField("datamartDtoMapper", _typeReferenceBuilder.typeRef(DatamartDtoMapper))[
+				setInitializer([append('''new DatamartDtoMapper()''')])]
+			type.members += field
+		}
+		// must be made after createSQLStatement
+		field = definition.toField("idMap",
+			_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+			_typeReferenceBuilder.typeRef(EType)))[
+			setInitializer([append('''new HashMap<String,EType>() «definition.createIdMap»''')])]
+		type.members += field
+		
+		field = definition.toField("typesMap",
+			_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),_typeReferenceBuilder.typeRef(EType))))[
+			setInitializer([append('''new HashMap<String,HashMap<String,EType>>() «definition.createTypesMaps(typesMap)»''')])]
+		type.members += field
+	}
+	
+	/**
+	 * <p>build the getters and setters from class variables of datamart definition.</p> 
+	 *
+	 */
+	def void toGetterSetter(JvmDeclaredType type, DatamartDefinition definition) {
+		var JvmOperation operation = null
+		operation = definition.toGetter("idMap",
+			_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+			_typeReferenceBuilder.typeRef(EType)))
+			operation.visibility = JvmVisibility::PUBLIC
+		type.members += operation
+		if (definition.source instanceof DatamartEntity || definition.source instanceof DatamartTask) {
+			operation = definition.toGetter("axisMap",
+				_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(Integer),
+					_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(String))))
+			operation.visibility = JvmVisibility::PUBLIC
+			type.members += operation
+		}
+	}
+
+	/**
+	 * <p>build the methods separately for cube, entity and task or SQL and MDX respective.</p> 
+	 *
+	 */
+	def void toOperations(JvmDeclaredType type, DatamartDefinition definition) {
+		var JvmOperation operation
+		
+		operation = definition.toMethod("initializeFilterMap",
+			_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+				_typeReferenceBuilder.typeRef(String)))[
+					body = [
+						append('''
+							return new HashMap<String,String>() «definition.createFilterMap(null)»;
+						''')
+					]
+		]
+		operation.visibility = JvmVisibility::PROTECTED
+		type.members += operation
+
+		// get numberofaxes method
+		operation = definition.toMethod("getNumberOfAxes", _typeReferenceBuilder.typeRef(int),
+			[
+				body = [append('''return «definition.getNumAxes»;''')]
+			])
+		type.members += operation
+
+		operation = definition.toMethod("getTypesMap", _typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),_typeReferenceBuilder.typeRef(EType)),
+			[
+				parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+				body = [append('''
+					«IF definition.roles.size > 0»
+					if (user == null || 
+						user.getUserName().equals("«IUserAccessService.ADMINISTRATOR»") ||
+						«binderClassName».getUserAccessService().getRoles() == null) 
+					{
+						return typesMap.get("«IUserAccessService.ADMINISTRATOR»");
+					} else {
+						// find the role with the most authorized items
+						String bestRole = null;
+						int bestSize = -1;
+						for(String role:«binderClassName».getUserAccessService().getRoles()) {
+							if (typesMap.containsKey(role)) {
+								if (bestSize < typesMap.get(role).size()) {
+									bestSize = typesMap.get(role).size();
+									bestRole = role;
+								}
+							}
+						}
+						if (bestRole != null) {
+							return typesMap.get(bestRole);
+						}
+						return null;
+					}
+					«ELSE»
+					return typesMap.get("«IUserAccessService.ADMINISTRATOR»");
+					«ENDIF»
+				''')]
+			])
+		operation.visibility = JvmVisibility::PUBLIC
+		type.members += operation
+
+		/* the task stuff */
+		if (definition.source instanceof DatamartTask) {
+			// get persistence unit
+			type.members += definition.toMethod("getPersistenceUnit", _typeReferenceBuilder.typeRef(String),
+				[
+				body = [
+					append(
+						'''
+							return null;
+						'''
+					)]
+				])
+			// client connect method
+			type.members += definition.toMethod("connect", _typeReferenceBuilder.typeRef(Connection),
+				[
+					body = [
+						append(
+							'''
+							return null;''')]
+				])
+
+			// disconnect method
+			type.members += definition.toMethod("disconnect", _typeReferenceBuilder.typeRef(Void::TYPE),
+				[
+					body = [
+						append(
+							'''''')]
+				])
+
+			// getFilters method
+			operation = definition.toMethod("getFilters",
+				_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+					_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(IDualData))),
+				[
+					parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					body = [
+						append(
+							'''
+							filterItems.clear();
+							for (String filterID : getFilterIds()) {
+								if (getFilter(filterID).equals("Groups")) {
+									ArrayList<IDualData> dataArray = new ArrayList<IDualData>();
+									for(String grp : «binderClassName».getBpmEngine().getGroups().keySet()) {
+										IDualData data = new DatamartData();
+										data.setSelectionValue(grp);
+										data.setUnformattedValue(grp);
+										dataArray.add(data);
+									}
+									filterItems.put(filterID, dataArray);
+								}
+								if (getFilter(filterID).equals("Users")) {
+									ArrayList<IDualData> dataArray = new ArrayList<IDualData>();
+									for(String grp : «binderClassName».getBpmEngine().getUsers().keySet()) {
+										IDualData data = new DatamartData();
+										data.setSelectionValue(grp);
+										data.setUnformattedValue(grp);
+										dataArray.add(data);
+									}
+									filterItems.put(filterID, dataArray);
+								}
+							}
+							return filterItems;''')]
+				])
+			type.members += operation
+
+			// getResults method
+			type.members += definition.toMethod("getResults", _typeReferenceBuilder.typeRef(DerivedCellSet),
+				[
+					parameters += definition.toParameter("client", _typeReferenceBuilder.typeRef(IBPMTaskClient))
+					parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					parameters += definition.toParameter("filteredItems",
+						_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String),
+							_typeReferenceBuilder.typeRef(String)))
+					body = [
+						append(
+							'''
+							if(user != null) {
+								List<TaskSummary> tasks = client.getUserTaskList(user, false);
+								if (tasks == null || tasks.size() == 0) {
+									tasks = client.getUserTaskList(user, true);
+								}
+								return (new DerivedCellSet(new SqlCellSet(tasks, getAxisMap()), null,
+									«binderClassName».getDSLMetadataService(),
+									user));
+							}
+							return null;
+							''')]
+				])
+
+			// getResults by taskid method
+			type.members += definition.toMethod("getResultsByTaskId", _typeReferenceBuilder.typeRef(DerivedCellSet),
+				[
+					parameters += definition.toParameter("client", _typeReferenceBuilder.typeRef(IBPMTaskClient))
+					parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					parameters += definition.toParameter("taskId", _typeReferenceBuilder.typeRef(Long))
+					body = [
+						append(
+							'''
+							List<TaskSummary> myTasks = new ArrayList<TaskSummary>(); 
+							myTasks.add(client.getUserTask(taskId, user));
+							return (new DerivedCellSet(new SqlCellSet(myTasks, getAxisMap()), null,
+								«binderClassName».getDSLMetadataService(), user));''')]
+				])
+
+			// test method
+			operation = definition.toMethod('''Test«definition.name»''', _typeReferenceBuilder.typeRef(String),
+				[
+					static = true
+					body = [
+						append(
+							'''
+							«definition.name»Datamart «definition.name.toLowerCase» = new «definition.name»Datamart();
+							HashMap<String,String> filteredItems = new HashMap<String,String>();
+							if («definition.name.toLowerCase».getFiltersCount() > 0) {
+								«definition.name.toLowerCase».getFilters(null);
+								for (String filterID : «definition.name.toLowerCase».filterItems.keySet()) {
+									filteredItems.put(filterID, "'"+«definition.name.toLowerCase».filterItems.get(filterID).iterator().next().getSelectionValue()+"'");
+								}
+							}
+							org.eclipse.osbp.vaaclipse.addons.softwarefactory.bpmImpl.BPMTaskClient client = new org.eclipse.osbp.vaaclipse.addons.softwarefactory.bpmImpl.BPMTaskClient();
+							DerivedCellSet cellset = «definition.name.toLowerCase».getResults(client, new User("«IUserAccessService.ADMINISTRATOR»"), filteredItems);
+							org.junit.Assert.assertNotNull(cellset);''')]
+				])
+			operation.returnType = _typeReferenceBuilder.typeRef(Void::TYPE)
+			var JvmAnnotationReference annRef = _annotationTypesBuilder.annotationRef(Test)
+			operation.annotations.add(annRef)
+			type.members += operation
+		}
+
+		/* the cube stuff */
+		if (definition.source instanceof DatamartCube) {
+			if ((definition.source as DatamartCube).cubeRef.cubeTypeEntity != null) {
+				val entity = (definition.source as DatamartCube).cubeRef.cubeTypeEntity.entityRef.entityValue
+				// get persistence unit
+				type.members += definition.toMethod("getPersistenceUnit", _typeReferenceBuilder.typeRef(String),
+					[
+					body = [
+						append(
+							'''
+								return "«(entity as LEntity).persistenceUnit»";
+							'''
+						)]
+					])
+				// connect method
+				type.members += definition.toMethod("connect", _typeReferenceBuilder.typeRef(RolapConnection),
+					[
+						body = [
+							append(
+								'''
+								if (connection == null) {   			
+									try {
+										connection = «binderClassName».getPersistenceService().getMondrianConnection(getPersistenceUnit(), "«((definition.source as DatamartCube).cubeRef.eContainer as CubePackage).fullyQualifiedName»");
+										«binderClassName».getPersistenceService().registerPersistenceUnit(getPersistenceUnit(), «(entity as LEntity).fullyQualifiedName».class);
+									} catch (SQLException e) {
+										log.error(e.getLocalizedMessage());
+										return (connection);
+									}
+								}
+								return (connection);''')]
+					])
+				// disconnect method
+				type.members += definition.toMethod("disconnect", _typeReferenceBuilder.typeRef(Void::TYPE),
+					[
+						body = [
+							append(
+								'''
+								if (connection != null) {
+									connection.close();
+									connection = null;
+								}''')]
+					])
+	
+				// getFilters method
+				operation = definition.toMethod("getFilters",
+					_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+						_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(IDualData))),
+					[
+						parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+						body = [
+							append(
+								'''
+								filterItems.clear();
+								connect();
+								if (connection != null) {
+									for (String filterID : getFilterIds()) {
+										DerivedCellSet cellSet = new DerivedCellSet(«binderClassName».getPersistenceService().sendQuery(connection,getFilter(filterID)),
+											«binderClassName».getDSLMetadataService(),
+											user);
+										List<DerivedAxis> axes = cellSet.getAxes();
+										DerivedAxis columnsAxis = axes.get(Axis.COLUMNS.ordinal());
+										ArrayList<IDualData> filterItemList = new ArrayList<IDualData>();
+										for (DerivedPosition position : columnsAxis.getPositions()) {
+											DerivedMember measure = position.getMembers().get(0);
+											IDualData data = new DatamartData();
+											data.setUnformattedValue(measure.getUniqueName());
+											filterItemList.add(data);
+										}
+										filterItems.put(filterID, filterItemList);
+									}
+								}
+								disconnect();
+								return filterItems;''')]
+					])
+				type.members += operation
+	
+				// setFilters method
+				operation = definition.toMethod("setFilters", _typeReferenceBuilder.typeRef(String),
+					[
+						parameters += definition.toParameter("filteredItems",
+							_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String),
+								_typeReferenceBuilder.typeRef(String)))
+						body = [
+							append(
+								'''
+								String filteredStatement = statement;
+								for (String filterID : filteredItems.keySet()) {
+									String filterValue = filteredItems.get(filterID).replace("'","");
+									  	filteredStatement = filteredStatement.replace(filterID, filterValue);
+								}
+								filteredStatement = filteredStatement.replace("<empty>,","").replace(",<empty>","").replace("<empty>","");
+								log.debug("«definition.name»:"+filteredStatement);
+								return filteredStatement;''')]
+					])
+				type.members += operation
+	
+				// execute method
+				type.members += definition.toMethod("getResults", _typeReferenceBuilder.typeRef(DerivedCellSet),
+					[
+						parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+						parameters += definition.toParameter("filteredItems",
+							_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String),
+								_typeReferenceBuilder.typeRef(String)))
+						parameters += definition.toParameter("operativeDtoClass", _typeReferenceBuilder.typeRef(Class))
+						parameters += definition.toParameter("operativeDtos",
+							_typeReferenceBuilder.typeRef(List, _typeReferenceBuilder.typeRef(IDto)))
+						body = [
+							append(
+								'''
+								DerivedCellSet derivedCellSet = null;
+								connect();
+								if (connection != null) {
+									derivedCellSet = new DerivedCellSet(«binderClassName».getPersistenceService().sendQuery(connection, setFilters(filteredItems)),
+											«binderClassName».getDSLMetadataService(),
+											user);
+								}
+								disconnect();
+								return derivedCellSet;''')]
+					])
+	
+				// test method
+				operation = definition.toMethod('''Test«definition.name»''', _typeReferenceBuilder.typeRef(String),
+					[
+						static = true
+						body = [
+							append(
+								'''
+								«definition.name»Datamart «definition.name.toLowerCase» = new «definition.name»Datamart();
+								HashMap<String,String> filteredItems = new HashMap<String,String>();
+								if («definition.name.toLowerCase».getFiltersCount() > 0) {
+									«definition.name.toLowerCase».getFilters(null);
+									for (String filterID : «definition.name.toLowerCase».filterItems.keySet()) {
+										filteredItems.put(filterID, «definition.name.toLowerCase».filterItems.get(filterID).iterator().next().getSelectionValue());
+									}
+								}
+								DerivedCellSet cellset = «definition.name.toLowerCase».getResults(new User("«IUserAccessService.ADMINISTRATOR»"), filteredItems, null, null);
+								org.junit.Assert.assertNotNull(cellset);
+								«definition.name.toLowerCase».disconnect();'''
+							)]
+					])
+				operation.returnType = _typeReferenceBuilder.typeRef(Void::TYPE)
+				var JvmAnnotationReference annRef = _annotationTypesBuilder.annotationRef(Test)
+				operation.annotations.add(annRef)
+				type.members += operation
+			}
+		}
+
+		/* the entity stuff */
+		if (definition.source instanceof DatamartEntity) {
+			// get persistence unit
+			type.members += definition.toMethod("getPersistenceUnit", _typeReferenceBuilder.typeRef(String),
+				[
+				body = [
+					append(
+						'''
+							return "«(definition.source as DatamartEntity)?.entityRef?.persistenceUnit»";
+						'''
+					)]
+				])
+			// connect method
+			type.members += definition.toMethod("connect", _typeReferenceBuilder.typeRef(Connection),
+				[
+					body = [
+						append(
+							'''
+							if (connection == null) {   			
+								try {
+									connection = «binderClassName».getPersistenceService().getPersistenceUnitConnection(getPersistenceUnit());
+									«binderClassName».getPersistenceService().registerPersistenceUnit(getPersistenceUnit(), «(definition.source as DatamartEntity)?.entityRef?.fullyQualifiedName».class);
+								} catch (SQLException e) {
+									log.error(e.getLocalizedMessage());
+									return (connection);
+								}
+							}
+							return (connection);'''
+						)]
+				])
+
+			// disconnect method
+			type.members += definition.toMethod("disconnect", _typeReferenceBuilder.typeRef(Void::TYPE),
+				[
+					body = [
+						append(
+							'''
+							if (connection != null) {   			
+								try {
+									connection.close();
+									connection = null;
+								} catch (SQLException e) {
+									log.error(e.getLocalizedMessage());
+								}
+							}'''
+						)]
+				])
+
+			// getFilters method
+			operation = definition.toMethod("getFilters",
+				_typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String),
+					_typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(IDualData))),
+				[
+					parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					body = [
+						append(
+							'''
+							filterItems.clear();
+							connect();
+							if (connection != null) {
+								try {
+									for (String filterID : getFilterIds()) {
+										if (!getFilter(filterID).contains("«IDataMart.filterIdPlaceholder»")) {
+											ArrayList<IDualData> filterItemList = new ArrayList<IDualData>();
+											ResultSet rs = connection.createStatement().executeQuery(getFilter(filterID));
+											if (rs != null) {
+												while (rs.next()) {
+											  		int type = rs.getMetaData().getColumnType(1);
+											  		IDualData data = new DatamartData();
+											  		
+											  		switch (type) {
+											  			case java.sql.Types.DATE:
+											  				data.setSelectionValue("to_date('"+rs.getDate(1).toString().replace(".0","")+"','YYYY-MM-DD HH24:MI:SS')");
+											  				if (user == null) {
+												  				data.setUnformattedValue(rs.getDate(1).toString());
+											  				} else {
+											  					data.setUnformattedValue(SimpleDateFormatter.getFormat("LONGDATE", user.getLocale()).format(rs.getDate(1)));
+											  				}
+											  				break;
+											  			case java.sql.Types.TIMESTAMP:
+											  				data.setSelectionValue("to_timestamp('"+rs.getTimestamp(1).toString().replace(".0","")+"','YYYY-MM-DD HH24:MI:SS')");
+											  				if (user == null) {
+												  				data.setUnformattedValue(rs.getDate(1).toString());
+											  				} else {
+												  				data.setUnformattedValue(SimpleDateFormatter.getFormat("LONGDATE", user.getLocale()).format(rs.getTimestamp(1)));
+												  			}
+											  				break;
+											  			case java.sql.Types.DECIMAL:
+											  				data.setUnformattedValue(rs.getBigDecimal(1).toPlainString());
+											  				data.setSelectionValue(rs.getBigDecimal(1).toPlainString());
+											  				break;
+											  			case java.sql.Types.NUMERIC:
+											  			case java.sql.Types.DOUBLE:
+											  				data.setUnformattedValue(Double.toString(rs.getDouble(1)));
+											  				data.setSelectionValue(Double.toString(rs.getDouble(1)));
+											  				break;
+											  			case java.sql.Types.FLOAT:
+											  				data.setUnformattedValue(Float.toString(rs.getFloat(1)));
+											  				data.setSelectionValue(Float.toString(rs.getFloat(1)));
+											  				break;
+											  			case java.sql.Types.CHAR:
+											  			case java.sql.Types.NCHAR:
+											  			case java.sql.Types.NVARCHAR:
+											  			case java.sql.Types.VARCHAR:
+											  				data.setUnformattedValue(rs.getString(1));
+											  				data.setSelectionValue("'"+rs.getString(1)+"'");
+											  				break;
+											  		}
+													filterItemList.add(data);
+												}
+												rs.close();
+												filterItems.put(filterID, filterItemList);
+											}
+										}
+									}
+								} catch (SQLException e) {
+									log.error(e.getLocalizedMessage());
+								}
+							}
+							disconnect();
+							return filterItems;'''
+						)]
+				])
+			type.members += operation
+
+			// setFilters method
+			operation = definition.toMethod("setFilters", _typeReferenceBuilder.typeRef(String),
+				[
+					parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					parameters += definition.toParameter("filteredItems",
+						_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String),
+							_typeReferenceBuilder.typeRef(String)))
+					body = [
+						append(
+							'''
+							String filteredStatement = "";
+							«IF definition.roles.size > 0»
+							if (user == null || 
+								user.getUserName().equals("«IUserAccessService.ADMINISTRATOR»") ||
+								«binderClassName».getUserAccessService().getRoles() == null) 
+							{
+								filteredStatement = statements.get("«IUserAccessService.ADMINISTRATOR»");
+							}
+							else {
+								// find the role with the biggest statement of authorized items
+								String bestRole = null;
+								int bestSize = -1;
+								for(String role:«binderClassName».getUserAccessService().getRoles()) {
+									if (statements.containsKey(role)) {
+										if (bestSize < statements.get(role).length()) {
+											bestSize = statements.get(role).length();
+											bestRole = role;
+										}
+									}
+								}
+								if (bestRole != null) {
+									filteredStatement = statements.get(bestRole);
+								}
+							}
+							«ELSE»
+							filteredStatement = statements.get("«IUserAccessService.ADMINISTRATOR»");
+							«ENDIF»
+							for (String filterID : filteredItems.keySet()) {
+								String filterValue = filteredItems.get(filterID);
+								if (filterID.endsWith(".id$")) {
+									if	(!filteredStatement.toLowerCase().contains(" where ")) {
+										if	((" "+filterValue).toLowerCase().contains("where ")) {
+											filteredStatement += " "+filterValue;
+										}
+										else {
+											filteredStatement += " where "+filterValue;
+										}
+									}
+									else {
+										if	(filterValue.trim().toLowerCase().startsWith("and ") ||
+											 filterValue.trim().toLowerCase().startsWith("or ") ) {
+											filteredStatement += filterValue;
+										}
+										else {
+											filteredStatement += " and "+filterValue;
+										}
+									}
+								}
+								else {
+								   	filteredStatement = filteredStatement.replace(filterID, filterValue);
+								}
+							}
+							log.debug("«definition.name»:"+filteredStatement);
+							return filteredStatement;''')]
+				])
+			type.members += operation
+
+			// execute method
+			type.members += definition.toMethod("getResults", _typeReferenceBuilder.typeRef(DerivedCellSet),
+				[
+					parameters += definition.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					parameters += definition.toParameter("filteredItems",
+						_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String),
+							_typeReferenceBuilder.typeRef(String)))
+					parameters += definition.toParameter("operativeDtoClass", _typeReferenceBuilder.typeRef(Class))
+					parameters += definition.toParameter("operativeDtos",
+						_typeReferenceBuilder.typeRef(List, _typeReferenceBuilder.typeRef(IDto)))
+					body = [
+						append(
+							'''
+							ResultSet rs = null;
+							SqlCellSet cellSet = null;
+							java.sql.ResultSetMetaData metaData = null;
+							// --- if filler text is enabled ---
+							if	(fFillerTextEnabled) {
+								// --- try to generate filler text ---
+								rs = generateFillerTextResultSet();
+							}
+							// --- if no result set is generated by now ---
+							connect();
+							if (rs == null) {
+								if (connection != null) {
+									String query = setFilters(user, filteredItems);
+									if (query.length()>0) {
+										try {
+											rs = connection.createStatement().executeQuery(query);
+										} catch (SQLException e) {
+											log.error("Query: "+query);
+											log.error(e.getLocalizedMessage());
+										}
+									}
+								}
+							}
+							if (rs != null) {
+								try {
+									cellSet = new SqlCellSet(rs, getAxisMap(), getIdMap(), datamartDtoMapper, operativeDtoClass, operativeDtos);
+									metaData = rs.getMetaData();
+								}
+								catch (java.sql.SQLException e) {
+									try {
+										log.error("Statement: "+rs.getStatement().toString());
+									} catch (SQLException e1) {}
+									log.error(e.getLocalizedMessage());
+								}
+								disconnect();
+								return (new DerivedCellSet(cellSet,
+									metaData,
+									«binderClassName».getDSLMetadataService(), user));
+							}
+							disconnect();
+							return null;''')]
+				])
+
+			addFillerTextMethods(type.members, definition, definition.source as DatamartEntity)
+
+			// extract all entity name & primary key tuples from cellset
+			type.members += definition.toMethod("addEntityIdsToModifyListener", _typeReferenceBuilder.typeRef(Void::TYPE),
+				[
+					parameters += definition.toParameter("listeningView", _typeReferenceBuilder.typeRef(IEntityIdModificationListenerView))
+					parameters += definition.toParameter("cellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
+					body = [
+						append('''
+							super.addEntityIdsToModifyListener(listeningView, cellSet);
+							// @TODO: 1) check for listenenView != null
+							// @TODO: 2) extract all entity & id (= primary key)
+							// @TODO: 3) for each tuple call listenenView.addEntityIdToModifyListener(entityName, primaryKey);
+						''')
+					]
+				])
+
+			// test method
+			operation = definition.toMethod('''Test«definition.name»''', _typeReferenceBuilder.typeRef(String),
+				[
+					static = true
+					body = [
+						append(
+							'''
+							«definition.name»Datamart «definition.name.toLowerCase» = new «definition.name»Datamart();
+							HashMap<String,String> filteredItems = new HashMap<String,String>();
+							if («definition.name.toLowerCase».getFiltersCount() > 0) {
+								«definition.name.toLowerCase».getFilters(null);
+								for (String filterID : «definition.name.toLowerCase».filterItems.keySet()) {
+									filteredItems.put(filterID, «definition.name.toLowerCase».filterItems.get(filterID).iterator().next().getSelectionValue());
+								}
+							}
+							DerivedCellSet cellset = «definition.name.toLowerCase».getResults(new User("«IUserAccessService.ADMINISTRATOR»"), filteredItems, null, null);
+							org.junit.Assert.assertNotNull(cellset);
+							«definition.name.toLowerCase».disconnect();''')]
+				])
+			operation.returnType = _typeReferenceBuilder.typeRef(Void::TYPE)
+			var JvmAnnotationReference annRef = _annotationTypesBuilder.annotationRef(Test)
+			operation.annotations.add(annRef)
+			type.members += operation
+		}
+	}
+	
+	def int getGetNumAxes(DatamartDefinition definition) {
+		var numAxes = 0
+		if	(definition.getSource() instanceof DatamartCube) {
+			for (axisslicer : (definition.getSource() as DatamartCube).getAxisslicer()) {
+				if (axisslicer instanceof DatamartAxis) {
+					numAxes = numAxes + 1
+				}
+			}
+		} 
+		else if (definition.getSource() instanceof DatamartTask) {
+			numAxes = 2
+		}
+		else if (definition.getSource() instanceof DatamartEntity) {
+			numAxes = getEntityNumAxes(definition.getSource() as DatamartEntity, 0)
+		}
+		return numAxes
+	}
+
+	def int getEntityNumAxes(DatamartEntity entity, int num) {
+		var numAxes = num
+		for (property : entity.getProperties()) {
+			if (property.getAxis().getValue() + 1 > num) {
+				numAxes = property.getAxis().getValue() + 1
+			}
+		}
+		for (DatamartNavigation navigation : entity.getNavigations()) {
+			numAxes = getEntityNumAxes(navigation.getDatamartEntity(), numAxes);
+		}
+		return numAxes;
+	}
+
+	def addFillerTextMethods(EList<JvmMember> list, DatamartDefinition definition, DatamartEntity entity) {
+		if	(entity.fillerMinCountRows > 0 && entity.fillerMaxCountRows > 0 && !entity.fillerDatas.empty) {
+			
+			list += definition.toMethod("generateFillerTextResultSet", _typeReferenceBuilder.typeRef(FillerTextResultSet),
+				[
+					body = [
+						append(
+							'''
+							FillerTextResultSet rs = new FillerTextResultSet(this, «entity.fillerMinCountRows», «entity.fillerMaxCountRows»);
+							''')
+						// @see {@link org.eclipse.osbp.xtext.reportdsl.common.DataTapyes}
+						for (data : entity.fillerDatas) {
+							var className = "String.class"
+							var typeName = "java.sql.Types.CHAR"
+							var type = data.fillerType 
+							switch type {
+								PropertyFillerDateType:		{ className = "Timestamp.class"		typeName = "java.sql.Types.TIMESTAMP" }
+								PropertyFillerDoubleType:		{ className = "BigDecimal.class"	typeName = "java.sql.Types.DECIMAL" }
+    							PropertyFillerIntegerType:	{ className = "BigDecimal.class"	typeName = "java.sql.Types.DECIMAL" }
+								PropertyFillerTextType:		{}
+							}
+							append(
+								'''
+								rs.addColumn("«data.propertyRef.name»", «className», null, «typeName»);
+								''')
+						}
+	  					append(
+	  						'''
+							return rs;''')]
+				])
+			
+			list += definition.toMethod("generateFillerTextRow", 
+						_typeReferenceBuilder.typeRef(Map, _typeReferenceBuilder.typeRef(String),
+							_typeReferenceBuilder.typeRef(Object)),
+				[
+					parameters += definition.toParameter("provider",
+						_typeReferenceBuilder.typeRef(FillerTextProvider))
+					body = [
+						append(
+							'''
+							Map<String,Object> rowData = new HashMap<>();
+							''')
+						for (data : entity.fillerDatas) {
+							var fillerTextMethod = "TO_BE_IMPLEMENTED"
+							var type = data.fillerType 
+							switch type {
+								PropertyFillerDateFuture:				fillerTextMethod = '''new Timestamp(provider.date(0,«type.dateFutureYears»).getTime())'''
+								PropertyFillerDatePast:				fillerTextMethod = '''new Timestamp(provider.date(-«type.datePastYears»,0).getTime())'''
+								PropertyFillerDateRange:				fillerTextMethod = '''new Timestamp(provider.date(«type.dateBeginYears»,«type.dateEndYears»).getTime())'''
+								PropertyFillerSignedDoubleRange:		{
+																		var beginRange = '''«type.beginRange»'''
+																		var endRange = '''«type.endRange»'''
+																		if	(type.beginRangeRef != null) {
+																			beginRange = '''((BigDecimal)rowData.get("«type.beginRangeRef.name»")).doubleValue()'''
+																		}
+																		if	(type.endRangeRef != null) {
+																			endRange = '''((BigDecimal)rowData.get("«type.endRangeRef.name»")).doubleValue()'''
+																		}
+																		fillerTextMethod = '''new BigDecimal(provider.signeddouble(«type.decimals»,«beginRange»,«endRange»,«type.rounded»))'''
+																		}
+								PropertyFillerSignedDoubleRandom:		{
+																		var List<String> items = new ArrayList
+																		for (item : type.items) {
+																			items.add('''«item»''')
+																		}
+																		append ('''double[] «data.propertyRef.name»_items = {«StringUtils.join(items, ",")»};
+																		''')
+																		fillerTextMethod = '''new BigDecimal(«data.propertyRef.name»_items[provider.unsignedinteger(«type.items.size-1»)])'''
+																		}
+								PropertyFillerSignedIntegerRange:		{
+																		var beginRange = '''«type.beginRange»'''
+																		var endRange = '''«type.endRange»'''
+																		if	(type.beginRangeRef != null) {
+																			beginRange = '''((BigDecimal)rowData.get("«type.beginRangeRef.name»")).intValue()'''
+																		}
+																		if	(type.endRangeRef != null) {
+																			endRange = '''((BigDecimal)rowData.get("«type.endRangeRef.name»")).intValue()'''
+																		}
+																		fillerTextMethod = '''new BigDecimal(provider.signedinteger(«beginRange»,«endRange»,«type.rounded»))'''
+																		}
+								PropertyFillerSignedIntegerRandom:	{
+																		var List<String> items = new ArrayList
+																		for (item : type.items) {
+																			items.add('''«item»''')
+																		}
+																		append ('''int[] «data.propertyRef.name»_items = {«StringUtils.join(items, ",")»};
+																		''')
+																		fillerTextMethod = '''new BigDecimal(«data.propertyRef.name»_items[provider.unsignedinteger(«type.items.size-1»)])'''
+																		}
+								PropertyFillerTextRandom:				{
+																		var List<String> items = new ArrayList
+																		for (item : type.items) {
+																			items.add('''"«item»"''')
+																		}
+																		append ('''Object[] «data.propertyRef.name»_items = {«StringUtils.join(items, ",")»};
+																		''')
+																		fillerTextMethod = '''«data.propertyRef.name»_items[provider.unsignedinteger(«type.items.size-1»)]'''
+																		}
+								PropertyFillerTextParagraphs:			fillerTextMethod = '''provider.paragraphs(«type.count»)'''
+								PropertyFillerTextSentences:			fillerTextMethod = '''provider.sentences(«type.count»)'''
+								PropertyFillerTextWords:				fillerTextMethod = '''provider.words(«type.count»)'''
+								PropertyFillerUnsignedDoubleRange:	{
+																		var beginRange = '''«type.beginRange»'''
+																		var endRange = '''«type.endRange»'''
+																		if	(type.beginRangeRef != null) {
+																			beginRange = '''((BigDecimal)rowData.get("«type.beginRangeRef.name»")).doubleValue()'''
+																		}
+																		if	(type.endRangeRef != null) {
+																			endRange = '''((BigDecimal)rowData.get("«type.endRangeRef.name»")).doubleValue()'''
+																		}
+																		fillerTextMethod = '''new BigDecimal(provider.unsigneddouble(«type.decimals»,«beginRange»,«endRange»,«type.rounded»))'''
+																		}
+								PropertyFillerUnsignedDoubleRandom:	{
+																		var List<String> items = new ArrayList
+																		for (item : type.items) {
+																			items.add('''«item»''')
+																		}
+																		append ('''double[] «data.propertyRef.name»_items = {«StringUtils.join(items, ",")»};
+																		''')
+																		fillerTextMethod = '''new BigDecimal(«data.propertyRef.name»_items[provider.unsignedinteger(«type.items.size-1»)])'''
+																		}
+    							PropertyFillerUnsignedIntegerRange:	{
+																		var beginRange = '''«type.beginRange»'''
+																		var endRange = '''«type.endRange»'''
+																		if	(type.beginRangeRef != null) {
+																			beginRange = '''((BigDecimal)rowData.get("«type.beginRangeRef.name»")).intValue()'''
+																		}
+																		if	(type.endRangeRef != null) {
+																			endRange = '''((BigDecimal)rowData.get("«type.endRangeRef.name»")).intValue()'''
+																		}
+																		fillerTextMethod = '''new BigDecimal(provider.unsignedinteger(«beginRange»,«endRange»,«type.rounded»))'''
+																		}
+    							PropertyFillerUnsignedIntegerRandom:	{
+																		var List<String> items = new ArrayList
+																		for (item : type.items) {
+																			items.add('''«item»''')
+																		}
+																		append ('''int[] «data.propertyRef.name»_items = {«StringUtils.join(items, ",")»};
+																		''')
+																		fillerTextMethod = '''new BigDecimal(«data.propertyRef.name»_items[provider.unsignedinteger(«type.items.size-1»)])'''
+																		}
+							}
+							append(
+								'''
+								rowData.put("«data.propertyRef.name»", «fillerTextMethod»);
+								''')
+						}
+	  					append(
+	  						'''
+							return rowData;''')]
+				])
+		}
+	}
+
+/** ???
+	def String getNumAxes(DatamartDefinition definition) {
+		var numAxes = 0
+		switch (definition.source) {
+			DatamartCube:
+				for (axisslicer : (definition.source as DatamartCube).axisslicer) {
+					if (axisslicer instanceof DatamartAxis) {
+						numAxes = numAxes + 1
+					}
+				}
+			DatamartTask:
+				numAxes = 2
+			DatamartEntity:
+				numAxes = (definition.source as DatamartEntity).getEntityNumAxes(0)
+		}
+		return '''return «numAxes»;'''
+	}
+
+	def int getEntityNumAxes(DatamartEntity entity, int num) {
+		var numAxes = num
+		for (property : entity.properties) {
+			if (property.axis.value + 1 > num) {
+				numAxes = property.axis.value + 1
+			}
+		}
+		for (navigation : entity.navigations) {
+			numAxes = navigation.datamartEntity.getEntityNumAxes(numAxes)
+		}
+		return numAxes
+	}
+??? */
+
+	/**
+	 * <p>build the id map as lookup for primary key oriented applications.</p> 
+	 *
+	 */
+	def String createIdMap(DatamartDefinition definition) {
+		var listTxt = ""
+		for (idColumn : idMap.keySet) {
+			listTxt = '''
+			«listTxt»
+					put("«idColumn»", EType.«dtType.getBasicType(idMap.get(idColumn))»);'''
+		}
+		listTxt = '''
+		{{
+			«listTxt»
+		}}'''
+		return listTxt
+	}
+
+	/**
+	 * <p>build the types map as lookup for datatypes.</p> 
+	 *
+	 */
+	def String createTypesMaps(DatamartDefinition definition, HashMap<String,LEntityAttribute> typesMap) {
+		var listTxt = '''
+			put("«IUserAccessService.ADMINISTRATOR»", new HashMap<String,EType>()«definition.createTypesMap(null, typesMap)»);'''			
+		for(role :definition.roles) {
+			listTxt = '''
+			«listTxt»
+			put("«role.assignedRole.name»", new HashMap<String,EType>()«definition.createTypesMap(role, typesMap)»);'''			
+		}
+		listTxt = '''
+		{{
+			«listTxt»
+		}}'''
+		return listTxt
+	}
+
+	/**
+	 * <p>build the types map as lookup for datatypes according to authorization roles.</p> 
+	 *
+	 */
+	def String createTypesMap(DatamartDefinition definition, DatamartRole role, HashMap<String,LEntityAttribute> typesMap) {
+		var listTxt = ""
+		if (role == null) { // grant all
+			for(property:typesMap.keySet) {
+				val type = dtType.getBasicType(typesMap.get(property))
+				listTxt = '''
+				«listTxt»
+				put("«property»", EType.«type.toString»);'''
+			}
+		}
+		else {
+			for(property:typesMap.keySet) {
+				if(role.isAuthorized(property)) {
+					val type = dtType.getBasicType(typesMap.get(property))
+					listTxt = '''
+					«listTxt»
+					put("«property»", EType.«type.toString»);'''
+				}
+			}
+		}
+		listTxt = '''
+		{{
+			«listTxt»
+		}}'''
+		return listTxt
+	}
+
+	/**
+	 * <p>build the axis map.</p> 
+	 *
+	 */
+	def String createAxisMap(DatamartDefinition definition) {
+		var text = ""
+		var map = <Integer, List<String>>newHashMap
+		if (definition.source != null) {
+			if (definition.source instanceof DatamartEntity) {
+				(definition.source as DatamartEntity).createAxisMap(map)
+			}
+			if (definition.source instanceof DatamartTask) {
+				(definition.source as DatamartTask).createAxisMap(map)
+			}
+		}
+		for (axisNumber : map.keySet()) {
+			var listTxt = ""
+			for (columnName : map.get(axisNumber)) {
+				listTxt = '''
+				«listTxt»
+						add("«columnName»");'''
+			}
+			if	(definition.source instanceof DatamartEntity && axisNumber == AxisEnum.COLUMNS_VALUE) {
+				if	(!ignoreEntityGrouping) {
+					for	(LEntity entityRef : entityGrouping.values) {
+						var idColumn = DatamartDefinitionUtil.getEntityIdAliasName(entityRef)
+						if	(idColumn != null) {
+							listTxt = '''
+							«listTxt»
+									add("«idColumn»");'''
+						}
+					}
+				}
+			}
+			listTxt = '''
+			{{
+				«listTxt»
+			}}'''
+			text = '''
+			«text»
+				put(«axisNumber»,new ArrayList<String>() «listTxt»);'''
+		}
+		text = '''
+		{{
+			«text»
+		}}'''
+		return text
+	}
+
+	/**
+	 * <p>creates an axis map for tasks.</p> 
+	 *
+	 */
+	def void createAxisMap(DatamartTask task, HashMap<Integer, List<String>> map) {
+		for (column : task.columns) {
+			var axisNumber = 0
+			var name = column.columnRef.literal
+			var found = false
+			for (axNum : map.keySet()) {
+				if (axNum == axisNumber) {
+					map.get(axNum).add(name)
+					found = true
+				}
+			}
+			if (!found) {
+				var columns = <String>newArrayList
+				columns.add(name)
+				map.put(axisNumber, columns)
+			}
+		}
+	}
+
+	def void recursAxisMap(LScalarType type, DatamartProperty property, HashMap<Integer, List<String>> map, int axisNumber) {
+		if(type instanceof LBean) {
+			var bean = type as LBean
+			for(attr : bean.allAttributes) {
+				if (attr.type instanceof LBean) {
+					recursAxisMap(attr.type, property, map, axisNumber)
+				} else {
+					addAxisProperty(attr.name, map, axisNumber)
+				}
+			}
+		} else {
+			addAxisProperty(property.propertyRef.name, map, axisNumber)
+		}
+	}
+	
+	/**
+	 * <p>recursively create an axis map for entities.</p> 
+	 *
+	 */
+	def void createAxisMap(DatamartEntity entity, HashMap<Integer, List<String>> map) {
+		for (property : entity.properties) {
+			if (property.placed) {
+				var axisNumber = -1
+				if (property.axis.value == -1) {
+					axisNumber = 0
+				} else {
+					axisNumber = property.axis.value
+				}
+				var type = property.propertyRef.type as LScalarType
+				recursAxisMap(type, property, map, axisNumber)
+			}
+		}
+		for (navigation : entity.navigations) {
+			navigation.datamartEntity.createAxisMap(map)
+		}
+	}
+	
+	def addAxisProperty(String name, HashMap<Integer, List<String>> map, int axisNumber) {
+		var found = false
+		for (axNum : map.keySet()) {
+			if (axNum == axisNumber) {
+				map.get(axNum).add(name.toString)
+				found = true
+			}
+		}
+		if (!found) {
+			var columns = <String>newArrayList
+			columns.add(name.toString)
+			map.put(axisNumber, columns)
+		}
+	}
+	
+	def getPropertyName(DatamartProperty prop){
+		return '''«prop.propertyRef.name»'''
+	}
+	
+	def getPropertyType(DatamartProperty prop){
+		return prop.propertyRef.type
+	}
+
+	/**
+	 * <p>build a map for the filters contained in a datamart depending on a cube.</p> 
+	 *
+	 */
+	def createFilterMap(DatamartDefinition definition, HashMap<String, String> filterIdMap) {
+		var text = ""
+		if (definition.source != null) {
+			if (definition.source instanceof DatamartCube) {
+				var cube = (definition.source as DatamartCube)
+				for (axisslicer : cube.axisslicer) {
+					if (axisslicer instanceof DatamartAxis && (axisslicer as DatamartAxis).elements != null) {
+						for (element : (axisslicer as DatamartAxis).elements) {
+							if (element instanceof DatamartHierarchy) {
+								var hierarchy = (element as DatamartHierarchy)
+								if (hierarchy.filtered) {
+									text = '''
+									«text»
+									put("«IDataMart.decorate(IDataMart.singleSelectDecorator, (element as DatamartHierarchy).getLevelName(true, false, false, false))»","«(element as DatamartHierarchy).createMDXFilter(definition.source)»");'''
+									if (filterIdMap != null) {
+										filterIdMap.put(
+											'''«IDataMart.decorate(IDataMart.singleSelectDecorator, (element as DatamartHierarchy).
+												getLevelName(true, false, false, false))»''',
+											'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.
+												name».«(element as DatamartHierarchy).getLevelName(false, false, false,
+												false)»'''.toString.replace(".", "/"))
+									}
+								}
+								if (hierarchy.selected) {
+									text = '''
+									«text»
+									put("«IDataMart.decorate(IDataMart.multiSelectDecorator, (element as DatamartHierarchy).getLevelName(true, false, false, false))»","«(element as DatamartHierarchy).createMDXFilter(definition.source)»");'''
+									if (filterIdMap != null) {
+										filterIdMap.put(
+											'''«IDataMart.decorate(IDataMart.multiSelectDecorator,(element as DatamartHierarchy).
+												getLevelName(true, false, false, false))»''',
+											'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.
+												name».«(element as DatamartHierarchy).getLevelName(false, false, false,
+												false)»'''.toString.replace(".", "/"))
+									}
+								}
+								if (hierarchy.except) {
+									text = '''
+									«text»
+									put("«IDataMart.decorate(IDataMart.exceptDecorator, hierarchy.getDimensionName(true)+".["+hierarchy.exceptRef.name+"]")»","«hierarchy.createMDXFilter(definition.source)»");'''
+									if (filterIdMap != null) {
+										filterIdMap.put(
+											'''«IDataMart.decorate(IDataMart.exceptDecorator,(element as DatamartHierarchy).
+												getLevelName(true, false, false, false))»''',
+											'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.
+												name».«(element as DatamartHierarchy).getLevelName(false, false, false,
+												false)»'''.toString.replace(".", "/"))
+									}
+								}
+							}
+						}
+					}
+					if (axisslicer instanceof DatamartSlicer && (axisslicer as DatamartSlicer).element != null) {
+						var element = (axisslicer as DatamartSlicer).element
+						if (element instanceof DatamartHierarchy) {
+							var hierarchy = (element as DatamartHierarchy)
+							if (hierarchy.filtered) {
+								text = '''
+								«text»
+								put("«IDataMart.decorate(IDataMart.slicerSingleSelectDecorator,(element as DatamartHierarchy).getLevelName(true, false, false, false))»","«(element as DatamartHierarchy).
+									createMDXFilter(definition.source)»");'''
+								if (filterIdMap != null) {
+									filterIdMap.put(
+										'''«IDataMart.decorate(IDataMart.slicerSingleSelectDecorator, (element as DatamartHierarchy).
+											getLevelName(true, false, false, false))»''',
+										'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.
+											name».«(element as DatamartHierarchy).getLevelName(false, false, false, false)»'''.
+											toString.replace(".", "/"))
+								}
+							}
+							if (hierarchy.selected) {
+								text = '''
+								«text»
+								put("«IDataMart.decorate(IDataMart.slicerMultiSelectDecorator, (element as DatamartHierarchy).getLevelName(true, false, false, false))»","«(element as DatamartHierarchy).
+									createMDXFilter(definition.source)»");'''
+								if (filterIdMap != null) {
+									filterIdMap.put(
+										'''«IDataMart.decorate(IDataMart.slicerMultiSelectDecorator,(element as DatamartHierarchy).getLevelName(true, false, false, false))»''',
+										'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.
+											name».«(element as DatamartHierarchy).getLevelName(false, false, false, false)»'''.
+											toString.replace(".", "/"))
+								}
+							}
+						}
+					}
+				}
+			}
+			if (definition.source instanceof DatamartEntity) {
+				var entity = (definition.source as DatamartEntity)
+				text = entity.createFiltermapCondition(definition, filterIdMap)
+			}
+			if (definition.source instanceof DatamartTask) {
+				var task = (definition.source as DatamartTask)
+				text = task.createFiltermapCondition(definition, filterIdMap)
+			}
+			if (text.length > 0) {
+				text = '''
+				{{
+				«text»
+				}}'''
+			}
+		}
+		return text
+	}
+
+	/**
+	 * <p>build a map for the filters contained in a datamart depending on a task.</p> 
+	 *
+	 */
+	def String createFiltermapCondition(DatamartTask task, DatamartDefinition definition,
+		HashMap<String, String> filterIdMap) {
+		var text = ""
+		for (condition : task.conditions) {
+			text = '''
+			«text»
+			«condition.createSQLFilter(task, definition, filterIdMap)»'''
+		}
+		return text
+	}
+
+	/**
+	 * <p>build the sql filter condition depending on an entity.</p> 
+	 *
+	 */
+	def createSQLFilter(DatamartCondition condition, DatamartTask task, DatamartDefinition definition,
+		HashMap<String, String> filterIdMap) {
+		var text = ""
+		if (condition.condition != null) {
+			if (condition.condition instanceof ConditionalExpression) {
+				var element = (condition.condition as ConditionalExpression).right
+				if ((condition.condition as ConditionalExpression).left instanceof DatamartTaskFilter) {
+					var taskFilter = (condition.condition as ConditionalExpression).left as DatamartTaskFilter
+					if (element.filtered || element.selected) {
+						if (filterIdMap != null) {
+							filterIdMap.put(
+								'''«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»«taskFilter.
+								filterRef.literal»«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»''',
+								'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.name».«taskFilter.
+									filterRef.literal»'''.toString.replace(".", "/"))
+						}
+						var filter = '''«taskFilter.filterRef.literal»'''
+						text = '''
+						«text»
+						put("«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»«taskFilter.
+							filterRef.literal»«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.
+							selected»«IDataMart.multiSelectDecorator»«ENDIF»","«filter»");'''
+					}
+				} else if ((condition.condition as ConditionalExpression).left instanceof DatamartColumn) {
+					var taskColumn = (condition.condition as ConditionalExpression).left as DatamartColumn
+					{
+						if (element.filtered) {
+							if (filterIdMap != null) {
+								filterIdMap.put(
+									'''«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»«taskColumn.
+										columnRef.name()».«taskColumn.columnRef.name()»«IF element.filtered»«
+										IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»''',
+									'''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.
+										name».«taskColumn.columnRef.name()».«taskColumn.columnRef.name()»'''.toString.
+										replace(".", "/"))
+							}
+						}
+					}
+				}
+			}
+		}
+		return text
+	}
+
+	/**
+	 * <p>build a map for the filters contained in a datamart depending on an entity.</p> 
+	 *
+	 */
+	def String createFiltermapCondition(DatamartEntity entity, DatamartDefinition definition,
+		HashMap<String, String> filterIdMap) {
+		var text = ""
+		text = '''
+		«text»
+		«entity.createDefaultSQLFilter(filterIdMap)»'''
+		for (condition : entity.conditions) {
+			text = '''
+			«text»
+			«condition.createSQLFilter(entity, definition, filterIdMap)»'''
+		}
+		for (navigation : entity.navigations) {
+			if (navigation instanceof DatamartMember) {
+				text = '''
+				«text»
+				«(navigation as DatamartMember).datamartEntity.createFiltermapCondition(definition, filterIdMap)»'''
+			}
+			if (navigation instanceof DatamartOwner) {
+				text = '''
+				«text»
+				«(navigation as DatamartOwner).datamartEntity.createFiltermapCondition(definition, filterIdMap)»'''
+			}
+		}
+		return text
+	}
+
+	/**
+	 * <p>build the default sql filter on id depending on an entity.</p> 
+	 *
+	 */
+	def createDefaultSQLFilter(DatamartEntity entity, HashMap<String, String> filterIdMap) {
+		var text = ""
+		var filter = '''«IDataMart.filterIdPlaceholder»'''
+		if (filterIdMap != null) {
+			filterIdMap.put('''«IDataMart.singleSelectDecorator»«entity.entityAlias».id«IDataMart.singleSelectDecorator»''',
+				IDataMart.filterIdPlaceholder)
+		}
+		text = '''
+		«text»
+		put("«IDataMart.singleSelectDecorator»«entity.entityAlias».id«IDataMart.singleSelectDecorator»","«filter»");'''
+		return text
+	}
+
+	/**
+	 * <p>build the sql filter condition depending on an entity.</p> 
+	 *
+	 */
+	def createSQLFilter(DatamartCondition condition, DatamartEntity entity, DatamartDefinition definition,
+		HashMap<String, String> filterIdMap) {
+		var text = ""
+		if (condition.condition != null) {
+			if (condition.condition instanceof ConditionalExpression) {
+				var element = (condition.condition as ConditionalExpression).right
+				var property = (condition.condition as ConditionalExpression).left as DatamartProperty
+				if (element.filtered || element.selected) {
+					if (filterIdMap != null) {
+						filterIdMap.put('''«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»«property.getPropertyName(entity)»«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»''','''«(definition.eContainer as DatamartPackage).fullyQualifiedName».«definition.name».«property.getPropertyName(entity)»'''.toString.replace(".", "/"))
+					}
+					var filter = '''«IF element.optional»select «IDataMart.sqlFilterNothing» from «EnumDatabaseVendor.ONE_ROW_ONE_COLUMN_TABLE» union «ENDIF»select distinct «property.propertyRef.toColumnName» as \"«property.propertyRef.name»\" from «entity.entityRef.persistenceInfo.schemaName.provideSchemaName»«entity.entityRef.toTableName»'''
+					text = '''«text»put("«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»«property.getPropertyName(entity)»«IF element.filtered»«IDataMart.singleSelectDecorator»«ELSEIF element.selected»«IDataMart.multiSelectDecorator»«ENDIF»","«filter»");'''
+				}
+			}
+		}
+		return text
+	}
+
+	/**
+	 * <p>build the mdx filter slice depending on a cube.</p> 
+	 *
+	 */
+	def createMDXFilter(DatamartHierarchy level, DatamartSource source) {
+		var filter = "select {} on columns,"
+		if (level.levelRef != null) {
+			filter = '''«filter»«level.getLevelName(true, false, false, false)».members on rows'''
+		}
+		if (source instanceof DatamartCube) {
+			filter = '''«filter» from «(source as DatamartCube).cubeRef.name»'''
+		}
+		return filter
+	}
+
+	/**
+	 * <p>helper to get a level name.</p> 
+	 *
+	 */
+	def getFilterAlias(DatamartHierarchy level) {
+		var text = ""
+		if (level.levelRef != null) {
+			text = '''«level.getDimensionName(false)»«level.levelRef.name.toFirstUpper»'''
+		}
+		return text
+	}
+
+	/**
+	 * <p>mdx syntax part for aggregations on sets.</p> 
+	 *
+	 */
+	def createSetAggregation(List<DatamartSetAggregation> usedSetAggregation, Boolean nonEmpty) {
+		var set = ""
+		var firstTuple = true
+		for (element : usedSetAggregation) {
+			if (firstTuple) {
+				firstTuple = false
+			} else {
+				set = '''«set»,'''
+			}
+			set = '''«set»«element.evaluateExpression(null)»'''
+		}
+		if (usedSetAggregation.size > 1) {
+			set = '''«IF nonEmpty»Non Empty«ENDIF»{«set»}'''
+		} else if (usedSetAggregation.size > 0) {
+			set = '''«IF nonEmpty»Non Empty «ENDIF»«set»'''
+		}
+		return set
+	}
+
+	/**
+	 * <p>mdx syntax part for hierarchies.</p> 
+	 *
+	 */
+	def createHierarchies(List<DatamartHierarchy> usedHierarchies, Boolean nonEmpty) {
+		var set = ""
+		var firstTuple = true
+		for (element : usedHierarchies) {
+			if (firstTuple) {
+				firstTuple = false
+			} else {
+				set = '''«set»,'''
+			}
+			set = '''«set»«element.getLevelName(true, true, true, false)»'''
+		}
+		if (usedHierarchies.size > 1) {
+			set = '''«IF nonEmpty»Non Empty«ENDIF»{«set»}'''
+		} else if (usedHierarchies.size > 0) {
+			set = '''«IF nonEmpty»Non Empty «ENDIF»«set»'''
+		}
+		return set
+	}
+
+	/**
+	 * <p>mdx syntax part for measures.</p> 
+	 *
+	 */
+	def createMeasures(List<DatamartMeasure> usedMeasures, List<DatamartDerivedMeasure> usedDerived,
+		Boolean nonEmpty) {
+		var set = ""
+		var firstTuple = true
+		for (element : usedMeasures) {
+			if (firstTuple) {
+				firstTuple = false
+			} else {
+				set = '''«set»,'''
+			}
+			set = '''«set»«element.getMeasureName»'''
+		}
+		for (element : usedDerived) {
+			if (firstTuple) {
+				firstTuple = false
+			} else {
+				set = '''«set»,'''
+			}
+			set = '''«set»«element.getDerivedMeasureName»'''
+		}
+		if (usedMeasures.size + usedDerived.size > 1) {
+			set = '''«IF nonEmpty»Non Empty«ENDIF»{«set»}'''
+		} else if (usedMeasures.size + usedDerived.size > 0) {
+			set = '''«IF nonEmpty»Non Empty «ENDIF»«set»'''
+		}
+		return set
+	}
+
+	/**
+	 * <p>the main function to build a mdx statement.</p> 
+	 *
+	 */
+	def createMDXStatement(DatamartDefinition definition) {
+		var cube = (definition.source as DatamartCube)
+		var body = ""
+		var slice = ""
+		var derived = ""
+		var firstAxis = true
+		var firstSlice = true
+		var firstderived = true
+		for (axisslicer : cube.axisslicer) {
+			if (axisslicer instanceof DatamartAxis) {
+				var crossJoinMeasure = false
+				var crossJoinHierarchy = false
+				var crossJoinSetAggregation = false
+				var axis = (axisslicer as DatamartAxis)
+				if (firstAxis) {
+					firstAxis = false
+				} else {
+					body = '''«body»,'''
+				}
+				if (axis.elements != null) {
+					var set = ""
+					val usedHierarchies = <DatamartHierarchy>newArrayList
+					val usedMeasures = <DatamartMeasure>newArrayList
+					val usedDerivedMeasure = <DatamartDerivedMeasure>newArrayList
+					val usedSetAggregation = <DatamartSetAggregation>newArrayList
+					for (element : axis.elements) {
+						if (element instanceof DatamartSetAggregation) {
+
+							// if a set aggregation comes along, all is cross joined
+							if (usedMeasures.size > 0 || usedDerivedMeasure.size > 0) {
+								if (crossJoinMeasure) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createMeasures(
+									usedMeasures, usedDerivedMeasure, false)»'''
+								if (crossJoinMeasure) {
+									set = '''«set»)'''
+								}
+								usedMeasures.clear
+								usedDerivedMeasure.clear
+								crossJoinSetAggregation = true
+							}
+							if (usedHierarchies.size > 0) {
+								if (crossJoinHierarchy) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createHierarchies(
+									usedHierarchies, false)»'''
+								if (crossJoinHierarchy) {
+									set = '''«set»)'''
+								}
+								usedHierarchies.clear
+								crossJoinSetAggregation = true
+							}
+							var setAggregation = (element as DatamartSetAggregation)
+							usedSetAggregation.add(setAggregation)
+						}
+						if (element instanceof DatamartHierarchy) {
+
+							// if hierarchy changes to measure, a crossjoin is generated
+							if (usedMeasures.size > 0 || usedDerivedMeasure.size > 0) {
+								if (crossJoinMeasure) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createMeasures(
+									usedMeasures, usedDerivedMeasure, false)»'''
+								if (crossJoinMeasure) {
+									set = '''«set»)'''
+								}
+								usedMeasures.clear
+								usedDerivedMeasure.clear
+								crossJoinMeasure = true
+							}
+							if (usedSetAggregation.size > 0) {
+								if (crossJoinSetAggregation) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createSetAggregation(
+									usedSetAggregation, false)»'''
+								if (crossJoinSetAggregation) {
+									set = '''«set»)'''
+								}
+								usedSetAggregation.clear
+								crossJoinSetAggregation = true
+							}
+							var hierarchyLevel = (element as DatamartHierarchy)
+
+							// if hierarchies are mixed, a crossjoin is generated
+							var lastHierarchy = usedHierarchies.last
+							if (!crossJoinHierarchy && (lastHierarchy == null ||
+								hierarchyLevel.getHierarchyName.equals(lastHierarchy.getHierarchyName))) {
+								usedHierarchies.add(hierarchyLevel)
+							} else {
+								if (crossJoinHierarchy) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createHierarchies(
+									usedHierarchies, false)»'''
+								if (crossJoinHierarchy) {
+									set = '''«set»)'''
+								}
+								usedHierarchies.clear
+								usedHierarchies.add(hierarchyLevel)
+								crossJoinHierarchy = true
+							}
+						}
+						if (element instanceof DatamartMeasure) {
+
+							// if measure changes to hierarchy, a crossjoin is generated
+							if (usedHierarchies.size > 0) {
+								if (crossJoinMeasure) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createHierarchies(
+									usedHierarchies, false)»'''
+								if (crossJoinMeasure) {
+									set = '''«set»)'''
+								}
+								usedHierarchies.clear
+								crossJoinMeasure = true
+							}
+							if (usedSetAggregation.size > 0) {
+								if (crossJoinSetAggregation) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createSetAggregation(
+									usedSetAggregation, false)»'''
+								if (crossJoinSetAggregation) {
+									set = '''«set»)'''
+								}
+								usedSetAggregation.clear
+								crossJoinSetAggregation = true
+							}
+							var measure = (element as DatamartMeasure)
+							usedMeasures.add(measure)
+						}
+						if (element instanceof DatamartDerivedMeasure) {
+
+							// if measure changes to hierarchy, a crossjoin is generated
+							if (usedHierarchies.size > 0) {
+								if (crossJoinMeasure) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createHierarchies(
+									usedHierarchies, false)»'''
+								if (crossJoinMeasure) {
+									set = '''«set»)'''
+								}
+								usedHierarchies.clear
+								crossJoinMeasure = true
+							}
+							if (usedSetAggregation.size > 0) {
+								if (crossJoinSetAggregation) {
+									set = '''«set»,'''
+								}
+								set = '''«IF cube.nonEmpty»NonEmptyCrossjoin«ELSE»CrossJoin«ENDIF»(«set»«createSetAggregation(
+									usedSetAggregation, false)»'''
+								if (crossJoinSetAggregation) {
+									set = '''«set»)'''
+								}
+								usedSetAggregation.clear
+								crossJoinSetAggregation = true
+							}
+							var measure = (element as DatamartDerivedMeasure)
+							usedDerivedMeasure.add(measure)
+						}
+					}
+					if (crossJoinMeasure || crossJoinHierarchy || crossJoinSetAggregation) {
+						set = '''«set»,'''
+					}
+					set = '''«set»«createHierarchies(usedHierarchies,
+						cube.nonEmpty && !(crossJoinMeasure || crossJoinHierarchy || crossJoinSetAggregation))»'''
+					usedHierarchies.clear
+					set = '''«set»«createMeasures(usedMeasures, usedDerivedMeasure,
+						cube.nonEmpty && !(crossJoinMeasure || crossJoinHierarchy || crossJoinSetAggregation))»'''
+					usedMeasures.clear
+					usedDerivedMeasure.clear
+					set = '''«set»«createSetAggregation(usedSetAggregation,
+						cube.nonEmpty && !(crossJoinMeasure || crossJoinHierarchy || crossJoinSetAggregation))»'''
+					usedMeasures.clear
+					if (crossJoinMeasure || crossJoinHierarchy || crossJoinSetAggregation) {
+						set = '''«set»)'''
+					}
+					body = '''«body»«set» on «axis.name»'''
+				}
+			}
+			if (axisslicer instanceof DatamartSlicer) {
+				if (firstSlice) {
+					firstSlice = false
+				} else {
+					slice = '''«slice»,'''
+				}
+				var element = (axisslicer as DatamartSlicer).element
+				if (element instanceof DatamartHierarchy) {
+					var hierarchyLevel = (element as DatamartHierarchy)
+					slice = '''«slice»«hierarchyLevel.getLevelName(true, true, true, true)»'''
+				}
+				if (element instanceof DatamartMeasure) {
+					slice = '''«slice»«(element as DatamartMeasure).getMeasureName»'''
+				}
+			}
+			if (axisslicer instanceof DatamartDefineDerivedMeasure) {
+				if (firstderived) {
+					firstderived = false
+				}
+				var derivedMeasure = (axisslicer as DatamartDefineDerivedMeasure)
+				derived = '''«derived» member [Measures].[«derivedMeasure.name»] as «derivedMeasure.buildDerivedFormula»'''
+			}
+		}
+		if (!firstSlice) {
+			slice = ''' where («slice»)'''
+		}
+		if (!firstderived) {
+			derived = '''with«derived» '''
+		}
+
+		return '''«derived»select «body» from «cube.cubeRef.name»«slice»'''
+	}
+
+	def isCrossJoined(DatamartDefinition definition) {
+		if(!(definition.source instanceof DatamartCube)) {
+			return false;
+		}
+		var cube = (definition.source as DatamartCube)
+		var firstAxis = true
+		for (axisslicer : cube.axisslicer) {
+			if (axisslicer instanceof DatamartAxis) {
+				var crossJoinMeasure = false
+				var crossJoinHierarchy = false
+				var crossJoinSetAggregation = false
+				var axis = (axisslicer as DatamartAxis)
+				if (firstAxis) {
+					firstAxis = false
+				}
+				if (axis.elements != null) {
+					val usedHierarchies = <DatamartHierarchy>newArrayList
+					val usedMeasures = <DatamartMeasure>newArrayList
+					val usedDerivedMeasure = <DatamartDerivedMeasure>newArrayList
+					val usedSetAggregation = <DatamartSetAggregation>newArrayList
+					for (element : axis.elements) {
+						if (element instanceof DatamartSetAggregation) {
+							// if a set aggregation comes along, all is cross joined
+							if (usedMeasures.size > 0 || usedDerivedMeasure.size > 0) {
+								usedMeasures.clear
+								usedDerivedMeasure.clear
+								crossJoinSetAggregation = true
+							}
+							if (usedHierarchies.size > 0) {
+								usedHierarchies.clear
+								crossJoinSetAggregation = true
+							}
+							var setAggregation = (element as DatamartSetAggregation)
+							usedSetAggregation.add(setAggregation)
+						}
+						if (element instanceof DatamartHierarchy) {
+							// if hierarchy changes to measure, a crossjoin is generated
+							if (usedMeasures.size > 0 || usedDerivedMeasure.size > 0) {
+								usedMeasures.clear
+								usedDerivedMeasure.clear
+								crossJoinMeasure = true
+							}
+							if (usedSetAggregation.size > 0) {
+								usedSetAggregation.clear
+								crossJoinSetAggregation = true
+							}
+							var hierarchyLevel = (element as DatamartHierarchy)
+
+							// if hierarchies are mixed, a crossjoin is generated
+							var lastHierarchy = usedHierarchies.last
+							if (!crossJoinHierarchy && (lastHierarchy == null ||
+								hierarchyLevel.getHierarchyName.equals(lastHierarchy.getHierarchyName))) {
+								usedHierarchies.add(hierarchyLevel)
+							} else {
+								usedHierarchies.clear
+								usedHierarchies.add(hierarchyLevel)
+								crossJoinHierarchy = true
+							}
+						}
+						if (element instanceof DatamartMeasure) {
+							// if measure changes to hierarchy, a crossjoin is generated
+							if (usedHierarchies.size > 0) {
+								usedHierarchies.clear
+								crossJoinMeasure = true
+							}
+							if (usedSetAggregation.size > 0) {
+								usedSetAggregation.clear
+								crossJoinSetAggregation = true
+							}
+							var measure = (element as DatamartMeasure)
+							usedMeasures.add(measure)
+						}
+						if (element instanceof DatamartDerivedMeasure) {
+							// if measure changes to hierarchy, a crossjoin is generated
+							if (usedHierarchies.size > 0) {
+								usedHierarchies.clear
+								crossJoinMeasure = true
+							}
+							if (usedSetAggregation.size > 0) {
+								usedSetAggregation.clear
+								crossJoinSetAggregation = true
+							}
+							var measure = (element as DatamartDerivedMeasure)
+							usedDerivedMeasure.add(measure)
+						}
+					}
+					usedMeasures.clear
+					usedDerivedMeasure.clear
+					usedMeasures.clear
+				}
+				return (crossJoinMeasure||crossJoinHierarchy||crossJoinSetAggregation);
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * <p>mdx syntax part for hierarchy names. If a hierarchy itself has no name in the cube definition, the dimension name is used instead</p> 
+	 *
+	 */
+	def String getHierarchyName(DatamartHierarchy hierarchy) {
+		if (hierarchy.hierarchyRef.name == null) {
+			return (hierarchy.hierarchyRef.eContainer as CubeDimension).name
+		} else {
+			hierarchy.hierarchyRef.name
+		}
+	}
+
+	/**
+	 * <p>mdx syntax part for derived measure expressions.</p> 
+	 *
+	 */
+	def buildDerivedFormula(DatamartDefineDerivedMeasure derivedMeasure) {
+		var formula = ""
+		for (element : derivedMeasure.derivedElement) {
+			formula = '''«formula»«element.evaluateExpression(null)»'''
+		}
+		return "'".concat(formula).concat("'")
+	}
+
+	/**
+	 * <p>as the grammar makes use of expressions along an abstract syntax tree, we need this recursive dispatcher to synthesize resulting code.</p> 
+	 *
+	 */
+	// due to a possible bug in xtext 2.4.2 we must supply the extra entity as the model will find a wrong one from the property
+	def String evaluateExpression(Expression element, DatamartEntity entity) {
+		var evaluation = ""
+		if (element.value != null) {
+			evaluation = element.value
+		}
+		if (element.numberValue != null) {
+			evaluation = element.numberValue
+		}
+		if (element.stringValue != null) {
+			evaluation = "'".concat(element.stringValue).concat("'")
+		}
+		if (element.filtered) {
+			evaluation = '''«IDataMart.singleSelectDecorator»«((element.eContainer() as ConditionalExpression).left as DatamartProperty).
+				getPropertyName(entity)»«IDataMart.singleSelectDecorator»'''
+		}
+		if (element.selected) {
+			evaluation = '''«IDataMart.multiSelectDecorator»«((element.eContainer() as ConditionalExpression).left as DatamartProperty).
+				getPropertyName(entity)»«IDataMart.multiSelectDecorator»'''
+		}
+		if (element.function != null) {
+			if (element.function instanceof DatamartFunction) {
+				evaluation = '''«evaluation»«element.hierarchy.getLevelName(true, true, true, false)».«(element.function as DatamartFunction).
+					function.name()»'''
+			}
+			if (element.function instanceof DatamartParameterFunction) {
+				evaluation = '''«evaluation»«element.hierarchy.getLevelName(true, true, true, false)».«(element.function as DatamartParameterFunction).
+					function.name()»(«(element.function as DatamartParameterFunction).parameter.value»)'''
+			}
+		}
+
+		// derived functionless hierarchized measure
+		if (element.hierarchy != null && element.function == null) {
+			evaluation = '''«evaluation»«element.hierarchy.getLevelName(true, true, true, false)»'''
+		}
+		if (element instanceof DatamartSetTuple) {
+			if ((element as DatamartSetTuple).left.setFunction != null) {
+				if ((element as DatamartSetTuple).left.setFunction instanceof DatamartSetFunction) {
+					evaluation = '''«evaluation»«((element as DatamartSetTuple).left.setFunction as DatamartSetFunction).
+						setFunction.name()»(«(element as DatamartSetTuple).right.getLevelName(true, true, true, false)»)'''
+				}
+				if ((element as DatamartSetTuple).left.setFunction instanceof DatamartSetParameterFunction) {
+					evaluation = '''«evaluation»«((element as DatamartSetTuple).left.setFunction as DatamartSetParameterFunction).
+						setFunction.name()»(«(element as DatamartSetTuple).right.getLevelName(true, true, true, false)»,«(((element as DatamartSetTuple).
+						left.setFunction as DatamartSetParameterFunction).parameter as DatamartFunctionIntParameter).
+						value»)'''
+				}
+			}
+		}
+		if (element instanceof DatamartMeasure) {
+			evaluation = '''«(element as DatamartMeasure).getMeasureName»'''
+		}
+		if (element instanceof DatamartDerivedMeasure) {
+			evaluation = '''«(element as DatamartDerivedMeasure).getDerivedMeasureName»'''
+		}
+		if (element instanceof DatamartHierarchy) {
+			evaluation = '''«(element as DatamartHierarchy).getLevelName(true, true, true, false)»'''
+		}
+		if (element instanceof DatamartProperty) {
+			evaluation = '''«(element as DatamartProperty).getPropertyName(entity)»'''
+			var type = (element as DatamartProperty).propertyRef.type
+			var typeName = ""
+			if (type != null && (type instanceof LDataType) && (type as LDataType).jvmTypeReference != null) {
+				typeName = (type as LDataType).jvmTypeReference.simpleName
+			} else {
+				typeName = type.name
+			}
+//			if (!typeName.equals("String") && !typeName.equals("Date")) {
+//				evaluation = '''to_char(«evaluation»)'''
+//			}
+		}
+		if (element instanceof Multiplication) {
+			evaluation = '''«(element as Multiplication).left.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation»*'''
+			evaluation = '''«evaluation»«(element as Multiplication).right.evaluateExpression(entity)»'''
+		}
+		if (element instanceof Division) {
+			evaluation = '''«(element as Division).left.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation»/'''
+			evaluation = '''«evaluation»«(element as Division).right.evaluateExpression(entity)»'''
+		}
+		if (element instanceof Addition) {
+			evaluation = '''(«(element as Addition).left.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation»+'''
+			evaluation = '''«evaluation»«(element as Addition).right.evaluateExpression(entity)»)'''
+		}
+		if (element instanceof Subtraction) {
+			evaluation = '''(«(element as Subtraction).left.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation»-'''
+			evaluation = '''«evaluation»«(element as Subtraction).right.evaluateExpression(entity)»)'''
+		}
+		if (element instanceof Conjunction) {
+			evaluation = '''«(element as Conjunction).left.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation» and '''
+			evaluation = '''«evaluation»«(element as Conjunction).right.evaluateExpression(entity)»'''
+		}
+		if (element instanceof Disjunction) {
+			evaluation = '''(«(element as Disjunction).left.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation» or '''
+			evaluation = '''«evaluation»«(element as Disjunction).right.evaluateExpression(entity)»)'''
+		}
+		if (element instanceof ConditionalExpression) {
+			evaluation = '''«(element as ConditionalExpression).left.evaluateExpression(entity)»'''
+			if ((element as ConditionalExpression).right.selected) {
+				evaluation = '''«evaluation» in '''
+				evaluation = '''«evaluation»(«(element as ConditionalExpression).right.evaluateExpression(entity)»)'''
+			} else {
+				evaluation = '''«evaluation» «(element as ConditionalExpression).operator.literal» '''
+				evaluation = '''«evaluation»«(element as ConditionalExpression).right.evaluateExpression(entity)»'''
+			}
+			if ((element as ConditionalExpression).right.optional) {
+				evaluation = '''(«(element as ConditionalExpression).right.evaluateExpression(entity)»=«
+					IDataMart.sqlFilterNothing» or «evaluation»)'''
+			}
+		}
+		if (element instanceof DatamartMemberTuple) {
+			evaluation = '''(«(element as DatamartMemberTuple).right.evaluateExpression(entity)»'''
+			evaluation = '''«evaluation»,'''
+			evaluation = '''«evaluation»«(element as DatamartMemberTuple).left.evaluateExpression(entity)»)'''
+		}
+		if (element instanceof DatamartAggregation) {
+			if ((element as DatamartAggregation).left.aggregation != null) {
+				if ((element as DatamartAggregation).left.aggregation instanceof DatamartAggregationFunction) {
+					evaluation = '''«((element as DatamartAggregation).left.aggregation as DatamartAggregationFunction).
+						aggregation.name()»('''
+					if ((element as DatamartAggregation).left.set instanceof DatamartHierarchy) {
+						evaluation = '''«evaluation»«((element as DatamartAggregation).left.set as DatamartHierarchy).
+							getLevelName(true, true, true, false)»'''
+					}
+					if ((element as DatamartAggregation).left.set instanceof DatamartSetTuple) {
+						evaluation = '''«evaluation»«((element as DatamartAggregation).left.set as DatamartSetTuple).
+							evaluateExpression(entity)»'''
+					}
+				}
+			}
+			evaluation = '''«evaluation»,'''
+			evaluation = '''«evaluation»«(element as DatamartAggregation).right.evaluateExpression(entity)»)'''
+		}
+		if (element instanceof DatamartSetAggregation) {
+			if ((element as DatamartSetAggregation).left.aggregation != null) {
+				if ((element as DatamartSetAggregation).left.aggregation instanceof DatamartSetAggregationFunction) {
+					evaluation = '''«((element as DatamartSetAggregation).left.aggregation as DatamartSetAggregationFunction).
+						aggregation.name()»('''
+					if ((element as DatamartSetAggregation).left.set instanceof DatamartHierarchy) {
+						evaluation = '''«evaluation»«((element as DatamartSetAggregation).left.set as DatamartHierarchy).
+							getLevelName(true, true, true, false)»'''
+					}
+					if ((element as DatamartSetAggregation).left.set instanceof DatamartSetTuple) {
+						evaluation = '''«evaluation»«((element as DatamartSetAggregation).left.set as DatamartSetTuple).
+							evaluateExpression(entity)»'''
+					}
+				}
+			}
+			evaluation = '''«evaluation»,«(((element as DatamartSetAggregation).left.aggregation as DatamartSetAggregationFunction).
+				parameter as DatamartFunctionIntParameter).value»,'''
+			evaluation = '''«evaluation»«(element as DatamartSetAggregation).right.evaluateExpression(entity)»)'''
+		}
+		return evaluation
+	}
+
+	/**
+	 * <p>mdx syntax part for property names, full qualified and aliased> 
+	 *
+	 */
+	def getPropertyName(DatamartProperty property, DatamartEntity entity) {
+		if (entity != null) {
+			return '''«entity.entityAlias».«property.propertyRef.toColumnName»'''
+		} else {
+			return '''«(property.propertyRef.eContainer as LEntity).name».«property.propertyRef.toColumnName»'''
+		}
+	}
+
+	/**
+	 * <p>mdx syntax part for measure names.</p> 
+	 *
+	 */
+	def getMeasureName(DatamartMeasure measure) {
+		return '''[Measures].[«measure.measureRef.name»]'''
+	}
+
+	/**
+	 * <p>mdx syntax part for derived measure names.</p> 
+	 *
+	 */
+	def getDerivedMeasureName(DatamartDerivedMeasure measure) {
+		return '''[Measures].[«measure.derivedRef.name»]'''
+	}
+
+	/**
+	 * <p>mdx syntax part for dimension names.</p> 
+	 *
+	 */
+	def getDimensionName(DatamartHierarchy hierarchy, Boolean withBrackets) {
+		var dim = ""
+		if (hierarchy.hierarchyRef.eContainer != null) {
+
+			// in xtext 2.4.0 this worked:
+			// if dimension name and hierarchy name are the same, only use dimension name. Else use hierarchy name
+			//			if ((hierarchy.hierarchyRef.eContainer as CubeDimension).name.equals(hierarchy.hierarchyRef.name)) {
+			//				dim = '''«IF withBrackets»[«ENDIF»«(hierarchy.hierarchyRef.eContainer as CubeDimension).name»«IF withBrackets»]«ENDIF»'''
+			//			} else {
+			//				dim = '''«IF withBrackets»[«ENDIF»«hierarchy.hierarchyRef.name»«IF withBrackets»]«ENDIF»'''
+			//			}
+			// for xtext 2.4.2. we must do this:
+			if (hierarchy.hierarchyRef.name == null) {
+				dim = '''«IF withBrackets»[«ENDIF»«(hierarchy.hierarchyRef.eContainer as CubeDimension).name»«IF withBrackets»]«ENDIF»'''
+			} else {
+				dim = '''«IF withBrackets»[«ENDIF»«hierarchy.hierarchyRef.name»«IF withBrackets»]«ENDIF»'''
+			}
+		}
+		return dim
+	}
+
+	/**
+	 * <p>mdx syntax part for level names.</p> 
+	 *
+	 */
+	def getLevelName(DatamartHierarchy hierarchy, Boolean withBrackets, Boolean withFiltermask, Boolean withFunctions,
+		Boolean isSlicer) {
+		var text = '''«hierarchy.getDimensionName(withBrackets)»'''
+		if (hierarchy.levelRef != null) {
+			text = '''«text».'''
+			if (hierarchy.filtered && withFiltermask) {
+				if (isSlicer) {
+					text = '''«IDataMart.slicerSingleSelectDecorator»«text»'''
+				} else {
+					text = '''«IDataMart.singleSelectDecorator»«text»'''
+				}
+			}
+			if (hierarchy.selected && withFiltermask) {
+				if (isSlicer) {
+					text = '''«IDataMart.slicerMultiSelectDecorator»«text»'''
+				} else {
+					text = '''«IDataMart.multiSelectDecorator»«text»'''
+				}
+			}
+			if (withBrackets) {
+				text = '''«text»['''
+			}
+			text = '''«text»«hierarchy.levelRef.name»'''
+			if (withBrackets) {
+				text = '''«text»]'''
+			}
+			if (hierarchy.filtered && withFiltermask) {
+				if (isSlicer) {
+					text = '''«text»«IDataMart.slicerSingleSelectDecorator»'''
+				} else {
+					text = '''«text»«IDataMart.singleSelectDecorator»'''
+				}
+			}
+			if (hierarchy.selected && withFiltermask) {
+				if (isSlicer) {
+					text = '''«text»«IDataMart.slicerMultiSelectDecorator»'''
+				} else {
+					text = '''«text»«IDataMart.multiSelectDecorator»'''
+				}
+			}
+			if (hierarchy.filtered || hierarchy.selected) {
+				if (hierarchy.all && withFunctions) {
+					text = '''«text».Children'''
+				}
+			} else if (withFunctions) {
+				text = '''«text».Members'''
+			}
+			if (hierarchy.except && withFunctions) {
+				text = '''Except(«text»,{«IDataMart.exceptDecorator»«hierarchy.getDimensionName(true)».«IF withBrackets»[«ENDIF»«hierarchy.
+					exceptRef.name»«IF withBrackets»]«ENDIF»«IDataMart.exceptDecorator»})'''
+			}
+			if (hierarchy.ordered && withFunctions) {
+				if (hierarchy.orderRef instanceof DatamartMeasure) {
+					text = '''Order(«text»,«(hierarchy.orderRef as DatamartMeasure).getMeasureName»,«IF hierarchy.
+						descending»Desc«ELSE»Asc«ENDIF»)'''
+				} else {
+					text = '''Order(«text»,«(hierarchy.orderRef as DatamartDerivedMeasure).getDerivedMeasureName»,«IF hierarchy.
+						descending»Desc«ELSE»Asc«ENDIF»)'''
+				}
+			}
+		}
+		if (hierarchy.levelRef == null && hierarchy.exceptRef == null && withFunctions) {
+			if (hierarchy.hierarchyRef.eContainer != null &&
+				!(hierarchy.hierarchyRef.eContainer as CubeDimension).typeTime) {
+				if (hierarchy.all) {
+					text = '''«text».Members'''
+				} else if (hierarchy.allMember && hierarchy.hierarchyRef.allMemberName) {
+					text = '''«text».[«hierarchy.hierarchyRef.allMemberNameValue.replaceAll("\"","")»]'''
+				} else if (hierarchy.allLevels) {
+					text = '''«text».AllMembers'''
+				} else if (hierarchy.defaultMember && hierarchy.hierarchyRef.defaultMember) {
+					text = '''«text».Defaultmember'''
+				} else {
+					if (hierarchy.hierarchyRef.defaultMember) {
+						text = '''«text».Defaultmember'''
+					} else {
+						text = '''«text».Members'''
+					}
+				}
+			}
+		}
+		return '''«text»'''
+	}
+
+	/**
+	 * <p>helper for camel case splitting.</p> 
+	 *
+	 */
+	def splitCamelCase(String s) {
+		var words = s.split("(?<!^)(?=[A-Z])")
+		return words.join(" ")
+	}
+
+	/**
+	 * <p>helper for entity names.</p> 
+	 *
+	 */
+	def getEntityAlias(DatamartEntity entity) {
+		return getEntityAlias(entity.entityRef)
+	}
+
+	/**
+	 * <p>helper for entity names including aliases when used in recursive join relations.</p> 
+	 *
+	 */
+	def String getEntityAlias(LEntity entityRef) { 
+		var alias = entityRef.getName() 
+		if (sqlAliasCounter.containsKey(entityRef.getName())) {
+			var newId = sqlAliasCounter.get(entityRef.getName())
+			alias = '''«alias»«IF newId > 0»«newId»«ENDIF»'''
+		}
+		return alias
+	}
+
+	/**
+	 * <p>helper for entity names including aliases when used in recursive join relations.</p> 
+	 *
+	 */
+	def entityAlias2(DatamartEntity entity) {
+		var alias = entity.entityRef.getName()
+		if (sqlAliasCounter.containsKey(entity.entityRef.getName())) {
+			var newId = sqlAliasCounter.get(entity.entityRef.getName())
+			sqlAliasCounter.put(entity.entityRef.getName(), newId + 1)
+			alias = '''«alias»«newId + 1»'''
+		} else {
+			sqlAliasCounter.put(entity.entityRef.getName(), 0)
+		}
+		return alias
+	}
+
+	/**
+	 * <p>main method to build sql statements bases on entities and roles.</p> 
+	 *
+	 */
+	def createSQLStatements(DatamartDefinition definition, HashMap<String,LEntityAttribute> typesMap) {
+		var listTxt = '''
+			put("«IUserAccessService.ADMINISTRATOR»", "«definition.createSQLStatement(null, typesMap)»");'''
+		for(role :definition.roles) {
+			var stmt = definition.createSQLStatement(role, typesMap); 
+			if(!stmt.empty) {
+				listTxt = '''
+				«listTxt»
+				put("«role.assignedRole.name»", "«stmt»");'''
+			}			
+		}
+		listTxt = '''
+		{{
+			«listTxt»
+		}}'''
+		return listTxt
+	}
+	/**
+	 * <p>main method to build sql statements bases on entities and a role.</p> 
+	 *
+	 */
+	def createSQLStatement(DatamartDefinition definition, DatamartRole role, HashMap<String,LEntityAttribute> typesMap) {
+		this.sqlAliasCounter.clear()
+		this.sqlFilterMap.clear()
+		this.sqlGrouping.clear()
+		this.entityGrouping.clear()
+		this.ignoreEntityGrouping = false
+		this.sqlHasAggregate = false
+		this.sqlHasOrder = false
+		this.idMap.clear()
+		var properties = <String, String>newHashMap
+		var conditions = <String>newArrayList
+		var orderings = <String>newArrayList
+		var entity = (definition.source as DatamartEntity)
+		var used = entity.createEntity(null, null, properties, conditions, orderings, role, typesMap)
+		var select = properties.createSelect(definition)
+		var condition = conditions.createCondition
+		var ordering = orderings.createOrdering
+		var grouping = this.sqlGrouping.createGrouping
+		if(select.empty) {
+			return ""
+		}
+		return '''select «select» from «used»«IF conditions.size > 0» where «condition»«ENDIF»«IF this.
+			sqlHasAggregate» group by «grouping»«ENDIF»«IF this.sqlHasOrder» order by «ordering»«ENDIF»'''
+	}
+
+	/**
+	 * <p>sql syntax part for group by.</p> 
+	 *
+	 */
+	def createGrouping(ArrayList<String> grouping) {
+		var groupingString = ""
+		for (String groupBy : grouping) {
+			groupingString = '''«IF !groupingString.empty»«groupingString»,«ENDIF»«groupBy»'''
+		}
+		return groupingString
+	}
+
+	/**
+	 * <p>sql syntax part for where.</p> 
+	 *
+	 */
+	def createCondition(ArrayList<String> conditions) {
+		var conditionString = ""
+		for (String condition : conditions) {
+			conditionString = '''«IF !conditionString.empty»«conditionString» and «ENDIF»(«condition»)'''
+		}
+		return conditionString
+	}
+
+	/**
+	 * <p>sql syntax part for order.</p> 
+	 *
+	 */
+	def createOrdering(ArrayList<String> orderings) {
+		var orderingString = ""
+		for (String order : orderings) {
+			this.sqlHasOrder = true
+			orderingString = '''«IF !orderingString.empty»«orderingString»,«ENDIF»«order»'''
+		}
+		return orderingString
+	}
+
+	/**
+	 * <p>sql syntax part for select.</p> 
+	 *
+	 */
+	def createSelect(Map<String, String> properties, DatamartDefinition definition) {
+		var selectString = ""
+		datamartDtoMapper = "new DatamartDtoMapper()"
+		for (String property : properties.keySet()) {
+			selectString = '''«IF !selectString.empty»«selectString»,«ENDIF»«property»«IF properties.get(property).
+				length > 0» as \"«properties.get(property)»\"«ENDIF»'''
+		}
+		if	(definition != null) {
+			if	(!ignoreEntityGrouping) {
+				for	(LEntity entityRef : entityGrouping.values) {
+					var entityName = entityRef.getName()
+					var dtoFqn = EntityUtils.getDtoFQNForLEntity(entityRef)
+					var idAttribute = DatamartDefinitionUtil.getEntityIdAttribute(entityRef)
+					var idDataType = dtType.getBasicType(DatamartDefinitionUtil.getEntityIdDatatype(entityRef)).toString
+					var idColumn = DatamartDefinitionUtil.getEntityIdAliasName(entityRef)
+					if	(idAttribute != null) {
+						selectString = '''«selectString»,«entityName».«idAttribute.name» as \"«idColumn»\"'''
+						idMap.put(idColumn, idAttribute)
+						datamartDtoMapper = '''
+						«datamartDtoMapper»
+						.add("«dtoFqn»", "«idAttribute.name»", EType.«idDataType», "«idColumn»")'''
+					}
+				}
+			}
+		}
+		return selectString
+	}
+
+	/**
+	 * <p>recursive entity relation builder.</p> 
+	 *
+	 */
+	def String createEntity(DatamartEntity entity, DatamartEntity parent, DatamartNavigation parentNavigation,
+		Map<String, String> properties, List<String> conditions, List<String> orderings, DatamartRole role, HashMap<String,LEntityAttribute> typesMap) {
+		var body = ""
+		if(role.isAuthorized(entity)){
+			body = '''«body»«entity.entityRef.persistenceInfo.schemaName.provideSchemaName»«entity.entityRef.toTableName» «entity.
+				entityAlias2»'''
+			if (parent != null && parentNavigation != null) {
+				body = ''' left join «body»«entity.createJoin(parent, parentNavigation)»'''
+			}
+			for (DatamartNavigation navigation : entity.navigations) {
+				if (navigation instanceof DatamartMember) {
+					if(role.isAuthorized((navigation as DatamartMember).datamartEntity, (navigation as DatamartMember).joinRef as DatamartReference)){
+						body = '''«body»«(navigation as DatamartMember).datamartEntity.createEntity(entity, navigation,
+							properties, conditions, orderings, role, typesMap)»'''
+					}
+				}
+				if (navigation instanceof DatamartOwner) {
+					if(role.isAuthorized((navigation as DatamartOwner).datamartEntity, (navigation as DatamartOwner).joinRef as DatamartReference)){
+						body = '''«body»«(navigation as DatamartOwner).datamartEntity.createEntity(entity, navigation,
+							properties, conditions, orderings, role, typesMap)»'''
+					}
+				}
+			}
+			if(entity.properties.empty) {
+				for(attr : entity.entityRef.allAttributes){
+					if(!attr.isId && !attr.isUuid) {
+						entity.entityRef.recurProperty(attr, false, "", properties, role, typesMap)
+					}
+				}
+			} else {
+				for (DatamartProperty property : entity.properties) {
+					entity.entityRef.recurProperty(property.propertyRef, property.aggregated, property.aggregate.getName(), properties, role, typesMap)
+				}
+			}
+			for (DatamartCondition condition : entity.conditions) {
+				conditions.add(condition.condition.evaluateExpression(entity))
+			}
+			for (DatamartOrder order : entity.ordering) {
+				orderings.add(entity.entityAlias+"."+order.orderBy.toColumnName + " " + order.orderHow.getName())
+			}
+		}
+		return body
+	}
+	
+	def void recurProperty(LEntity entity, LAttribute attr, boolean aggregated, String aggregateName, Map<String, String> properties, DatamartRole role, HashMap<String,LEntityAttribute> typesMap) {
+		var LScalarType type = attr.type 
+		if (type instanceof LBean) {
+			var bean = type as LBean
+			for(battr : bean.allAttributes) {
+				if (battr.type instanceof LBean) {
+					entity.recurProperty(battr, aggregated, aggregateName, properties, role, typesMap)
+				} else {
+					entity.addProperty(attr, aggregated, aggregateName, properties, role, typesMap)
+				}
+			}
+		}
+		else {
+			entity.addProperty(attr, aggregated, aggregateName, properties, role, typesMap)
+		}
+	}
+	
+	def void addProperty(LEntity entity, LAttribute attr, boolean aggregated, String aggregateName, Map<String, String> properties, DatamartRole role, HashMap<String,LEntityAttribute> typesMap) {
+		var key = '''«entity.entityAlias».«attr.toColumnName»'''
+		typesMap.put(entity.name+"."+attr.toColumnName.toLowerCase, attr as LEntityAttribute);
+		if(role.isAuthorized(entity, attr.name)){
+			if (aggregated) {
+				key = '''«aggregateName»(«key»)'''
+				this.sqlHasAggregate = true;
+				properties.put(key.toString, '''«attr.name»''')
+				this.ignoreEntityGrouping = true
+			} else {
+				this.entityGrouping.put(entity.entityAlias, entity)
+				this.sqlGrouping.add(key.toString)
+				properties.put(key.toString, '''«attr.name»''')
+			}
+		}
+	}
+	
+	def boolean isAuthorized(DatamartRole role, DatamartEntity entity) {
+		// no role - all granted
+		if (role == null) {
+			return true
+		}
+		// all role entities
+		for(roleElement : role.assignedRole.roleElements) {
+			if (roleElement instanceof RoleEntity) {
+				if(entity.entityRef.name.equals(((roleElement as RoleEntity).entityRef as LEntity).name)) {
+					return true
+				}
+			}
+		}
+		return false
+	}
+
+	def boolean isAuthorized(DatamartRole role, LEntity entity, String propertyName) {
+		// no role - all granted
+		if (role == null) {
+			return true
+		}
+		// all role entities
+		for(roleElement : role.assignedRole.roleElements) {
+			if (roleElement instanceof RoleEntity) {
+				if(entity.name.equals(((roleElement as RoleEntity).entityRef as LEntity).name)) {
+					for(feature : (roleElement as RoleEntity).entityFeatures) {
+						if(propertyName.equals((feature.entityAttriCol as LEntityFeature).name)) {
+							if (feature instanceof RoleEntityAttribute) {
+								if("invisible".equals(feature.entityAttriUnauthorized.literal)) {
+									return false
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		return true
+	}
+
+	def boolean isAuthorized(DatamartRole role, String entityAttribute) {
+		// no role - all granted
+		if (role == null) {
+			return true
+		}
+		// all role entities
+		for(roleElement : role.assignedRole.roleElements) {
+			if (roleElement instanceof RoleEntity) {
+				var parts = entityAttribute.split("\\.");
+				if(parts.get(0).equals(((roleElement as RoleEntity).entityRef as LEntity).name)) {
+					for(feature : (roleElement as RoleEntity).entityFeatures) {
+						if(parts.get(1).equals((feature.entityAttriCol as LEntityFeature).name)) {
+							if (feature instanceof RoleEntityAttribute) {
+								if("invisible".equals(feature.entityAttriUnauthorized.literal)) {
+									return false
+								}
+							}
+						}
+					}
+					return true
+				}
+			}
+		}
+		return false
+	}
+	
+	def boolean isAuthorized(DatamartRole role, DatamartEntity entity, DatamartReference link) {
+		// no role - all granted
+		if (role == null) {
+			return true
+		}
+		// all role entities
+		for(roleElement : role.assignedRole.roleElements) {
+			if (roleElement instanceof RoleEntity) {
+				if(entity.entityRef.name.equals(((roleElement as RoleEntity).entityRef as LEntity).name)) {
+					// all role entity features
+					for(feature : (roleElement as RoleEntity).entityFeatures) {
+						if (feature instanceof RoleEntityReference) {
+							if(link.ref.name.toLowerCase.equals((feature.entityAttriCol as LEntityFeature).name)) {
+                                if  (RolePropertyEnum.INVISIBLE.literal.equals(feature.entityAttriUnauthorized.literal)) {
+									return false
+								}
+							}
+						}
+					}
+					return true;
+				}
+			}
+		}
+		return false
+	}
+	def getProvideSchemaName(String schemaName) '''«IF schemaName != null && schemaName.length > 0»«schemaName».«ENDIF»'''
+
+	/**
+	 * <p>sql syntax part for joined relations.</p> 
+	 *
+	 */
+	def createJoin(DatamartEntity entity, DatamartEntity parent, DatamartNavigation navigation) {
+		var join = ""
+		var joinRef = navigation.joinRef
+		if (joinRef instanceof DatamartReference) {
+			var name = joinRef.ref.name
+			if (navigation instanceof DatamartMember) {
+				// determination of the right column name of the foreign key id required for the join 
+				// using the name of the reference instead of the name joinref.
+				var refs = navigation.datamartEntity.entityRef.allReferences
+				for (ref:refs){
+					if (ref.type!=null && ref.type.equals(parent.entityRef)){
+						name = ref.name
+					}
+				}
+				join = '''«entity.getEntityAlias».«name»_id=«parent.getEntityAlias».id'''
+			} else if (navigation instanceof DatamartOwner) {
+				join = '''«entity.getEntityAlias».id=«parent.getEntityAlias».«name»_id'''
+			}
+			join = ''' on(«join»)'''
+		}
+	}
+	
+  /**
+   * get a set of entities used by the datamart
+   */
+  def Set<LEntity> findAllEntities(DatamartDefinition datamart) {
+	var entities = new HashSet<LEntity>()
+	switch (datamart.source) {
+	  DatamartEntity: findAllEntites(datamart.source as DatamartEntity, entities)
+	}
+	return entities
+  }
+  
+  /**
+   * add all entities used by the datamart entity into the given set of entities
+   */
+  def void findAllEntites(DatamartEntity datamartEntity, Set<LEntity> entities) {
+  	entities.add(datamartEntity.entityRef)
+  	for	(DatamartNavigation navigation : datamartEntity.navigations) {
+  		findAllEntites(navigation.datamartEntity, entities)
+  	}
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartModelGenerator.xtend b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartModelGenerator.xtend
new file mode 100644
index 0000000..88950a1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartModelGenerator.xtend
@@ -0,0 +1,122 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.jvmmodel
+
+import com.vaadin.ui.Notification
+import java.math.BigDecimal
+import java.sql.DriverManager
+import java.sql.ResultSet
+import java.sql.SQLException
+import java.sql.Timestamp
+import java.util.List
+import java.util.Locale
+import java.util.ResourceBundle
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.osbp.dsl.common.datatypes.IDto
+import org.eclipse.osbp.persistence.IPersistenceService
+import org.eclipse.osbp.preferences.ProductConfiguration
+import org.eclipse.osbp.runtime.common.i18n.ITranslator
+import org.eclipse.osbp.ui.api.datamart.DerivedOlapException
+import org.eclipse.osbp.ui.api.datamart.IDualData
+import org.eclipse.osbp.ui.api.useraccess.IPermissionList
+import org.eclipse.osbp.user.User
+import org.eclipse.osbp.ui.api.datamart.IDataMart.EType
+import org.eclipse.osbp.utils.fillertext.FillerTextProvider
+import org.eclipse.osbp.utils.vaadin.SimpleDateFormatter
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
+import org.eclipse.osbp.xtext.datamart.common.DatamartData
+import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedPosition
+import org.eclipse.osbp.xtext.datamart.common.sql.FillerTextResultSet
+import org.eclipse.osbp.xtext.datamart.common.sql.FillerTextResultSetMetaData
+import org.eclipse.osbp.xtext.datamart.common.sql.SqlCellSet
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig
+import org.eclipse.xtext.xbase.compiler.ImportManager
+import org.jbpm.task.query.TaskSummary
+import org.olap4j.Axis
+import org.osgi.service.component.annotations.ReferenceCardinality
+import org.osgi.service.component.annotations.ReferencePolicy
+
+class DatamartModelGenerator extends I18NModelGenerator {
+	@Inject extension BasicDslGeneratorUtils
+ 	
+	var public bindPersistenceMethod = "bindPersistenceService"
+	var public unbindPersistenceMethod = "unbindPersistenceService"
+	var public bindBPMMethod = "bindBPMEngine"
+	var public unbindBPMMethod = "unbindBPMEngine"
+	var public bindUserAccessMethod = "bindUserAccessService"
+	var public unbindUserAccessMethod = "unbindUserAccessService"
+	var public bindDSLMetadataService = "bindDSLMetadataService"
+	var public unbindDSLMetadataService = "unbindDSLMetadataService"
+
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+		addTranslatables("Groups,Users")
+		super.doGenerate(input, fsa)
+	}
+	
+	override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) {
+		// required to initialize the needed builder to avoid deprecated methods
+		builder = context.eResource
+		// ---------
+		addImportFor(importManager, _typeReferenceBuilder
+			,DriverManager
+			,SQLException
+			,List
+			,DerivedAxis
+			,DerivedPosition
+			,DerivedMember
+			,ResultSet
+			,SqlCellSet 
+			,DerivedOlapException 
+			,Axis 
+			,IPersistenceService 
+			,ProductConfiguration
+			,IPermissionList
+			,EType
+			,IDualData
+			,SimpleDateFormatter
+			,DatamartData
+			,ReferenceCardinality
+			,ReferencePolicy
+			,User
+	
+			// workload handling
+			,IDto
+			,DatamartDtoMapper
+			// jbpm task imports
+			,TaskSummary
+			,Notification
+	
+			// filler text generation
+			,BigDecimal
+			,Timestamp
+			,FillerTextProvider
+			,FillerTextResultSet
+			,FillerTextResultSetMetaData
+	
+			// this stuff for translations
+			,ResourceBundle
+			,Locale
+			,ITranslator
+		)
+		super.createAppendable(context, importManager, config)
+	}
+		
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/scoping/DatamartDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/scoping/DatamartDSLScopeProvider.xtend
new file mode 100644
index 0000000..d84485a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/scoping/DatamartDSLScopeProvider.xtend
@@ -0,0 +1,294 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.scoping;
+
+import java.util.ArrayList
+import javax.inject.Inject
+import org.eclipse.emf.common.util.BasicEList
+import org.eclipse.emf.common.util.EList
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions
+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.xtext.cubedsl.CubeDimension
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure
+import org.eclipse.osbp.xtext.cubedsl.CubeType
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference
+import org.eclipse.osbp.xtext.datamartdsl.util.DatamartScopes
+import org.eclipse.xtext.resource.CompilerPhases
+import org.eclipse.xtext.resource.IEObjectDescription
+import org.eclipse.xtext.scoping.IScope
+import org.eclipse.xtext.scoping.Scopes
+import org.eclipse.xtext.scoping.impl.MapBasedScope
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider
+import org.slf4j.LoggerFactory
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it 
+ *
+ */
+@SuppressWarnings("restriction")
+public class DatamartDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+
+	@Inject extension ModelExtensions
+
+	@Override
+	override IScope getScope(EObject context, EReference reference) {
+		if (reference == DatamartDSLPackage.Literals.DATAMART_HIERARCHY__HIERARCHY_REF) {
+			return getDatamartHierarchy_hierarchyRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.DATAMART_MEASURE__MEASURE_REF) {
+			return getDatamartMeasure_measureRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.DATAMART_HIERARCHY__LEVEL_REF) {
+			return getDatamartHierarchy_levelRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.DATAMART_HIERARCHY__EXCEPT_REF) {
+			return getDatamartHierarchy_levelRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.DATAMART_HIERARCHY__ORDER_REF) {
+			return getDatamartMeasure_measureRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.DATAMART_PROPERTY__PROPERTY_REF) {
+			return getDatamartProperty_propertyRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA__PROPERTY_REF) {
+			return getFillerData_propertyRef(context)
+		} else if (reference == DatamartDSLPackage.Literals.DATAMART_REFERENCE__REF) {
+			return getDatamartEntity_datamartReferenceRef(context, reference)
+		} else {
+			val scope = super.getScope(context, reference);
+			return scope
+		}
+	}
+
+	def IScope getFillerData_propertyRef(EObject context) {
+		var result = <EObject>newArrayList
+		var eObj = context.eContainer()
+		while (eObj != null && !(eObj instanceof DatamartDefinition)) {
+			eObj = eObj.eContainer()
+		}
+		if (eObj != null) {
+			if ((eObj as DatamartDefinition).source instanceof DatamartEntity) {
+				var entity = (eObj as DatamartDefinition).source as DatamartEntity
+				entity.iterateEntity(result)
+			}
+		}
+		return Scopes::scopeFor(result)
+	}
+
+	def void iterateEntity(DatamartEntity entity, ArrayList<EObject> result) {
+		for (prop : entity.properties) {
+			result.add(prop.propertyRef)
+		}
+		for (navigation : entity.navigations) {
+			switch (navigation) {
+				DatamartMember: (navigation as DatamartMember).datamartEntity.iterateEntity(result)
+				DatamartOwner: (navigation as DatamartOwner).datamartEntity.iterateEntity(result)
+			}
+		}
+	}
+
+	/**
+	 * 
+	 * @param context
+	 * @return LEntity
+	 */
+	def LEntity getDatamartEntity(EObject context) {
+		var eObj = context.eContainer()
+		while (eObj != null && !(eObj instanceof DatamartEntity)) {
+			eObj = eObj.eContainer()
+		}
+		if (eObj != null) {
+			return (eObj as DatamartEntity).entityRef
+		} else {
+			return null
+		}
+
+	}
+
+	/**
+	 * 
+	 * @param context
+	 * @return
+	 */
+	def IScope getDatamartProperty_propertyRef(EObject context) {
+		var result = <EObject>newArrayList
+		var entity = context.datamartEntity
+		if (entity != null) {
+			for (LEntityAttribute attr : entity.allAttributes) {
+				if (attr.name != null) {
+					result.add(attr)
+				}
+			}
+		}
+		return Scopes::scopeFor(result)
+	}
+
+	def getDatamartEntity_datamartReferenceRef(EObject context, EReference reference) {
+		var result = <EObject>newArrayList
+		var eObj = (context as DatamartReference).eContainer
+		while (!(eObj instanceof DatamartEntity)) {
+			eObj = eObj.eContainer
+			if (eObj == null) {
+				return Scopes::scopeFor(result)
+			}
+		}
+		if (eObj instanceof DatamartEntity) {
+			for (ref : (eObj as DatamartEntity).entityRef.allReferences) {
+				if ((context as DatamartReference).eContainer instanceof DatamartOwner) {
+					if (!(ref as LEntityFeature).toMany) {
+						result.add(ref)
+					}
+				} else {
+					if ((ref as LEntityFeature).toMany) {
+						result.add(ref)
+					}
+				}
+			}
+		}
+		return Scopes::scopeFor(result)
+	}
+
+	def IScope getDatamartHierarchy_hierarchyRef(EObject context) {
+		var result = <EObject>newArrayList
+		var eObj = context.eContainer
+		while (!(eObj instanceof DatamartDefinition)) {
+			eObj = eObj.eContainer
+		}
+		if (eObj != null) {
+			if (eObj instanceof DatamartDefinition) {
+				if ((eObj as DatamartDefinition).source != null) {
+					var datamartSource = eObj.source
+					if (datamartSource instanceof DatamartCube) {
+						if ((datamartSource).cubeRef != null) {
+							var cube = datamartSource.cubeRef
+							if (cube != null) {
+								if (cube.getCubeTypeEntity() != null) {
+									var hierList = new BasicEList<CubeHierarchy>();
+									var dimList = cube.getCubeTypeEntity().getDimensionUsages();
+									for (CubeDimensionUsage ccCubeDimensionUsage : dimList) {
+										hierList.addAll(ccCubeDimensionUsage.sourceValue.hierarchies)
+									}
+									result = getHierarchyList(hierList, result);
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		return Scopes.scopeFor(result)
+	}
+
+	def IScope getDatamartHierarchy_levelRef(EObject eObj) {
+		var result = <EObject>newArrayList
+		var eObjLocal = eObj
+		while (!(eObjLocal instanceof DatamartHierarchy)) {
+			eObjLocal = eObjLocal.eContainer()
+		}
+		if (eObjLocal != null) {
+			if (eObjLocal instanceof DatamartHierarchy) {
+				var hierarchy = eObjLocal.hierarchyRef
+				if (hierarchy != null) {
+					if (hierarchy instanceof CubeHierarchy) {
+						var entity = hierarchy.cubeDimEntity
+						if (entity != null) {
+							for (CubeLevel ccCubeLevel : entity.hierarchLevels) {
+								if (ccCubeLevel.name != null) {
+									result.add(ccCubeLevel)
+								}
+							}
+							if (entity.dimEntity != null) {
+								entity.dimEntity.recurseLevels(result)
+							}
+						}
+					}
+				}
+			}
+		}
+		return Scopes.scopeFor(result)
+	}
+
+	def void recurseLevels(CubeDimensionEntityEntity dimEntity, ArrayList<EObject> result) {
+		if (dimEntity != null) {
+			for (CubeLevel ccCubeLevel : dimEntity.hierarchLevels) {
+				if (ccCubeLevel.name != null) {
+					result.add(ccCubeLevel);
+				}
+			}
+			dimEntity.dimEntity.recurseLevels(result)
+		}
+	}
+
+	def IScope getDatamartMeasure_measureRef(EObject eObj) {
+		var result = <EObject>newArrayList
+		var eObjLocal = eObj.eContainer();
+		while (!(eObjLocal instanceof DatamartDefinition)) {
+			eObjLocal = eObjLocal.eContainer();
+		}
+		if (eObjLocal != null) {
+			if (eObjLocal instanceof DatamartDefinition) {
+				if (eObjLocal.source != null) {
+					var datamartSource = eObjLocal.source
+					if (datamartSource instanceof DatamartCube) {
+						if (datamartSource.cubeRef != null) {
+							var cube = datamartSource.cubeRef
+							if (cube != null) {
+								if (cube instanceof CubeType) {
+									if (cube.cubeTypeEntity != null) {
+										for (CubeMeasure ccCubeMeasure : cube.cubeTypeEntity.measures) {
+											if (ccCubeMeasure.name != null) {
+												result.add(ccCubeMeasure);
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		return Scopes.scopeFor(result)
+	}
+
+	def ArrayList<EObject> getHierarchyList(EList<CubeHierarchy> hierList, ArrayList<EObject> result) {
+		for (CubeHierarchy ccCubeHierarchy : hierList) {
+			var name = ccCubeHierarchy.name
+			if ((name == null) || (name.length() == 0)) {
+				var eObj = ccCubeHierarchy.eContainer
+				while (!(eObj instanceof CubeDimension)) {
+					eObj = eObj.eContainer
+				}
+				name = (eObj as CubeDimension).name
+				ccCubeHierarchy.name = name
+			}
+			result.add(ccCubeHierarchy)
+		}
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/AxisEnumUtil.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/AxisEnumUtil.java
new file mode 100644
index 0000000..b6cc313
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/AxisEnumUtil.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.datamartdsl.util;
+
+import java.util.List;
+
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+
+/**
+ * The Class AxisEnumUtil.
+ */
+public class AxisEnumUtil {
+	  /**
+	   * A public read-only list of all the '<em><b>Axis Enum</b></em>' enumerators.
+	   * <!-- begin-user-doc -->
+	   * <!-- end-user-doc -->
+	   * @generated
+	   */
+	  public static final List<AxisEnum> VALUES = AxisEnum.VALUES;
+
+	  /** Returns the '<em><b>Axis Enum</b></em>' literal with the specified
+	 * literal value. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @param literal
+	 *            the literal
+	 * @return the axis enum
+	 * @generated
+	 */
+	  public static AxisEnum get(String literal){
+		  return AxisEnum.get(literal);
+	  }
+
+	  /** Returns the '<em><b>Axis Enum</b></em>' literal with the specified
+	 * integer value. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the value
+	 * @return the axis enum
+	 * @generated
+	 */
+	  public static AxisEnum get(int value)
+	  {
+		  return AxisEnum.get(value);
+	  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/DatamartMemberEntityNameComputation.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/DatamartMemberEntityNameComputation.java
new file mode 100644
index 0000000..159fe2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/DatamartMemberEntityNameComputation.java
@@ -0,0 +1,61 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.util.SimpleAttributeResolver;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+import com.google.common.base.Function;
+
+/**
+ * The Class DatamartMemberEntityNameComputation.
+ */
+public class DatamartMemberEntityNameComputation implements Function<EObject, String> {
+
+	/** The name resolver. */
+	private SimpleAttributeResolver<EObject, String> nameResolver = SimpleAttributeResolver.newResolver(String.class, "name");
+	
+	/**
+	 * Gets the entity name.
+	 *
+	 * @param from
+	 *            the from
+	 * @return the entity name
+	 */
+	private String getEntityName(EObject from){
+		EObject member = from;
+		if (from instanceof LEntityReference){
+			while (!(member instanceof LEntity)){
+				member = from.eContainer();
+			}
+			if (member instanceof LEntity){
+				return ((LEntity)member).getName().toLowerCase().concat("_").concat(((LEntityReference)from).getName());
+			}			
+		} 
+		return nameResolver.apply(from);
+	}
+	
+	/* (non-Javadoc)
+	 * @see com.google.common.base.Function#apply(java.lang.Object)
+	 */
+	public String apply(EObject from) {
+		String name = nameResolver.apply(from);
+		if (name != null && name.length() > 0)
+			return getEntityName(from);
+		return null;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/DatamartScopes.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/DatamartScopes.java
new file mode 100644
index 0000000..8f25a32
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/DatamartScopes.java
@@ -0,0 +1,110 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.Scopes;
+import org.eclipse.xtext.scoping.impl.SimpleScope;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Iterables;
+
+/**
+ * The Class DatamartScopes.
+ */
+public class DatamartScopes extends Scopes {
+	
+	/**
+	 * creates a scope using the passed function to compute the names and sets
+	 * the passed scope as the parent scope.
+	 *
+	 * @param <T>
+	 *            the generic type
+	 * @param elements
+	 *            the elements
+	 * @return the i scope
+	 */
+	public static <T extends EObject> IScope scopeForEntity(Iterable<? extends T> elements) {
+		return scopeForString(elements, new DatamartMemberEntityNameComputation(), IScope.NULLSCOPE);
+	}
+
+	/**
+	 * creates a scope using the passed function to compute the names and sets
+	 * the passed scope as the parent scope.
+	 *
+	 * @param <T>
+	 *            the generic type
+	 * @param elements
+	 *            the elements
+	 * @return the i scope
+	 */
+	public static <T extends EObject> IScope scopeForLEntityRef(Iterable<? extends T> elements) {
+		return scopeFor(elements, new LEntityRefFQNComputation(), IScope.NULLSCOPE);
+	}
+	
+	/**
+	 * creates a scope using the passed function to compute the names and sets
+	 * the passed scope as the parent scope.
+	 *
+	 * @param <T>
+	 *            the generic type
+	 * @param elements
+	 *            the elements
+	 * @param nameComputation
+	 *            the name computation
+	 * @param outer
+	 *            the outer
+	 * @return the i scope
+	 */
+	public static <T extends EObject> IScope scopeForString(Iterable<? extends T> elements,
+			final Function<T, String> nameComputation, IScope outer) {
+		return new SimpleScope(outer,scopedElementsForString(elements, nameComputation));
+	}
+	
+	/**
+	 * transforms an {@link Iterable} of {@link EObject}s into an
+	 * {@link Iterable} of {@link IEObjectDescription}s computing the name of
+	 * the elements using the passed {@link Function} If the passed function
+	 * returns null the object is filtered out.
+	 *
+	 * @param <T>
+	 *            the generic type
+	 * @param elements
+	 *            the elements
+	 * @param nameComputation
+	 *            the name computation
+	 * @return the iterable
+	 */
+	public static <T extends EObject> Iterable<IEObjectDescription> scopedElementsForString(Iterable<? extends T> elements,
+			final Function<T, String> nameComputation) {
+		Iterable<IEObjectDescription> transformed = Iterables.transform(elements,
+				new Function<T, IEObjectDescription>() {
+					public IEObjectDescription apply(T from) {
+						final QualifiedName qualifiedName = QualifiedName.create(nameComputation.apply(from));
+						if (qualifiedName != null)
+							return new EObjectDescription(qualifiedName, from, null);
+						return null;
+					}
+				});
+		return Iterables.filter(transformed, Predicates.notNull());
+	}
+
+
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/EventBrokerDatamartUtils.xtend b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/EventBrokerDatamartUtils.xtend
new file mode 100644
index 0000000..2380259
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/EventBrokerDatamartUtils.xtend
@@ -0,0 +1,106 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.util
+
+import java.util.HashMap
+import org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart
+import javax.inject.Inject
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer
+import org.eclipse.emf.common.util.EList
+import java.util.ArrayList
+import org.eclipse.emf.ecore.EObject
+
+class EventBrokerDatamartUtils {
+	
+		@Inject extension DatamartDSLJvmModelInferrer datamartInferrer
+		
+		def HashMap<String, String> getUsedFilterInDatamart(EventBrokerDataMart datamart, HashMap<String, String> filterIdMap){
+		var usedFilterIdMap = <String, String>newHashMap()
+        for (filter : filterIdMap.entrySet){
+        	if (datamart.filter.equals(filter.value)){
+				usedFilterIdMap.put(filter.key, filter.value);
+			}
+		}
+        return usedFilterIdMap
+	}
+	
+		def HashMap<String,String> getFilterMap(EventBrokerDataMart datamart){
+		var filterIdMap = new HashMap<String, String>
+        datamartInferrer.createFilterMap(datamart.getDatamartDef, filterIdMap)
+        return filterIdMap
+	}
+	
+		def void removeAlreadyUsedFilter(EList<EventBrokerDataMart> datamarts, HashMap<String, HashMap<String, String>> datamartsFilterMap){
+		for (EventBrokerDataMart dat : datamarts) {
+			if (dat.filter!=null){
+				// remove the already default used filter of the root organization	
+				var filterIdMap = (datamartsFilterMap.get(dat.datamartDef.name) as HashMap<String,String>)	
+				// if key is already removed 
+				if (filterIdMap!=null){		
+					var filterIdMapTemp = (filterIdMap.clone as HashMap<String,String>)			
+			        for (filter : filterIdMapTemp.entrySet){
+			        	if (dat.filter.equals(filter.value)){
+							filterIdMap.remove(filter.key);
+						}
+					}
+				}
+			}
+		}
+	}
+	
+	def HashMap<String, String> getFilterMap(EList<EventBrokerDataMart> datamarts){
+		var filterMap = <String, String>newHashMap
+		return datamarts.getFilterMap(filterMap)
+	}
+	
+	def HashMap<String, String> getFilterMap(EList<EventBrokerDataMart> datamarts, HashMap<String, String> filterMap){
+		if (filterMap!=null){
+			for (datamart : datamarts){
+				filterMap.putAll(datamart.getUsedFilterInDatamart(datamart.filterMap))
+			}
+		}
+		return filterMap
+	}
+	
+	def HashMap<String, HashMap<String,String>> getUsedFilterMap(EList<EventBrokerDataMart> datamarts){
+		var usedFilterMap = <String, HashMap<String,String>>newHashMap()
+		for (EventBrokerDataMart dat : datamarts) {
+			if (dat!=null && dat.datamartDef!=null){
+				usedFilterMap.put(dat.datamartDef.name, dat.filterMap)
+			}
+		}
+		return usedFilterMap;
+	}
+	
+	def void fillResultWithFilter(EList<EventBrokerDataMart> datamarts, HashMap<String, HashMap<String,String>> usedDatamartsFilterMap, ArrayList<EObject> result){
+		for (EventBrokerDataMart dat : datamarts) {
+			// If datamart filter list has more than 1 filter. Because otherwise that filter is the
+			// default filter for all positions and no other filter is possible to use for a multiple position
+			if (dat!=null && dat.datamartDef!=null && usedDatamartsFilterMap.containsKey(dat.datamartDef.name) && !usedDatamartsFilterMap.get(dat.datamartDef.name).empty){
+				result.add(dat.datamartDef)
+			}
+		}
+
+	}
+	
+	def getEventBrokerMsgs(EList<EventBrokerDataMart> datamarts)'''
+	«FOR datamart : datamarts»
+eventBroker.send("«datamart.filter»/clear", selectedItem);
+eventBroker.send("«datamart.filter»", selectedItem);
+    «ENDFOR»
+	'''
+	
+	
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/LEntityRefFQNComputation.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/LEntityRefFQNComputation.java
new file mode 100644
index 0000000..d6aa8df
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/LEntityRefFQNComputation.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.datamartdsl.util;
+
+import javax.inject.Inject;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+import com.google.common.base.Function;
+
+import org.eclipse.osbp.xtext.datamartdsl.valueconverter.DatamartQualifiedNameProvider;
+
+/**
+ * The Class LEntityRefFQNComputation.
+ */
+public class LEntityRefFQNComputation implements Function<EObject, QualifiedName> {
+	
+	/** The qualified name provider. */
+	private DatamartQualifiedNameProvider qualifiedNameProvider = new DatamartQualifiedNameProvider();
+	
+	/* (non-Javadoc)
+	 * @see com.google.common.base.Function#apply(java.lang.Object)
+	 */
+	public QualifiedName apply(EObject from) {
+		if (from instanceof LEntityReference){
+			return qualifiedNameProvider.getFQN((LEntityReference)from);
+		}
+		return QualifiedName.create("");
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/SetAggregationEnumUtil.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/SetAggregationEnumUtil.java
new file mode 100644
index 0000000..969b9d0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/util/SetAggregationEnumUtil.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.datamartdsl.util;
+
+import java.util.List;
+
+import org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum;
+
+/**
+ * The Class SetAggregationEnumUtil.
+ */
+public class SetAggregationEnumUtil {
+	  /**
+	   * A public read-only list of all the '<em><b>Axis Enum</b></em>' enumerators.
+	   * <!-- begin-user-doc -->
+	   * <!-- end-user-doc -->
+	   * @generated
+	   */
+	  public static final List<SetAggregationEnum> VALUES = SetAggregationEnum.VALUES;
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLJavaValidator.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLJavaValidator.java
new file mode 100644
index 0000000..d23f12b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLJavaValidator.java
@@ -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                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.datamartdsl.validation;
+ 
+
+/**
+ * The Class DatamartDSLJavaValidator.
+ */
+public class DatamartDSLJavaValidator extends AbstractDatamartDSLValidator {
+
+//	@Check
+//	public void checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.getName().charAt(0))) {
+//			warning("Name should start with a capital", MyDslPackage.Literals.GREETING__NAME);
+//		}
+//	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLValidator.xtend b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLValidator.xtend
new file mode 100644
index 0000000..fad0eba
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLValidator.xtend
@@ -0,0 +1,70 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2013, 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.datamartdsl.validation
+
+import org.eclipse.osbp.xtext.datamartdsl.Activator
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.xtext.validation.Check
+import org.osgi.framework.Bundle
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole
+
+/**
+ * Custom validation rules. 
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+class DatamartDSLValidator extends AbstractDatamartDSLValidator {
+
+	@Check
+	def checkCommercialLicensed(DatamartDefinition datamart) {
+		if ((datamart.source instanceof DatamartTask)) {
+			for (Bundle b : Activator.getContext().getBundles()) {
+				if (b.getSymbolicName().startsWith("net.osbee.bpm")) {
+					return;
+				}
+			}
+			info(
+				'''BPM is needed and not yet licensed. License BPM at www.osbee.net''',
+				datamart, 
+				null)
+		}
+		if ((datamart.source instanceof DatamartCube)) {
+			for (Bundle b : Activator.getContext().getBundles()) {
+				if (b.getSymbolicName().startsWith("net.osbee.xtext.cubedsl")) {
+					return;
+				}
+			}
+			info(
+				'''Cube is needed and not yet licensed. License Cube at www.osbee.net''',
+				datamart, 
+				null)
+		}
+	}
+	
+	@Check
+	def checkSecurityLicensed(DatamartRole role) {
+			for (Bundle b : Activator.getContext().getBundles()) {
+				if (b.getSymbolicName().startsWith("net.osbee.xtext.organization")) {
+					return;
+				}
+			}
+			info(
+				'''Authorization is needed and not yet licensed. License Authorization at www.osbee.net''',
+				role, 
+				null)
+	}
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/valueconverter/DatamartQualifiedNameProvider.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/valueconverter/DatamartQualifiedNameProvider.java
new file mode 100644
index 0000000..2a171bb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/valueconverter/DatamartQualifiedNameProvider.java
@@ -0,0 +1,144 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.valueconverter;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+
+import com.google.inject.Inject;
+
+/**
+ * The Class DatamartQualifiedNameProvider.
+ */
+@SuppressWarnings("restriction")
+public class DatamartQualifiedNameProvider extends XbaseQualifiedNameProvider {
+
+	/** The qualified name converter. */
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	/** The extensions. */
+	@Inject
+	private ModelExtensions extensions;
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider#getFullyQualifiedName(org.eclipse.emf.ecore.EObject)
+	 */
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+
+		if (obj instanceof DatamartDefinition) {
+			DatamartDefinition definition = (DatamartDefinition) obj;
+            if (definition.getName() == null) {
+            	return null;
+            }
+            return qualifiedNameConverter.toQualifiedName(definition.getName());
+		}
+		if (obj instanceof DatamartEntity) {
+            return qualifiedCrossReferenceNameConverter(obj, DatamartDSLPackage.eINSTANCE.getDatamartEntity_EntityRef());
+		}
+		if (obj instanceof DatamartProperty) {
+			return qualifiedCrossReferenceNameConverter(obj, DatamartDSLPackage.eINSTANCE.getDatamartProperty_PropertyRef());
+		}
+		if (obj instanceof DatamartMeasure) {
+            return qualifiedCrossReferenceNameConverter(obj, DatamartDSLPackage.eINSTANCE.getDatamartMeasure_MeasureRef());
+		}
+		if (obj instanceof DatamartHierarchy) {
+			return qualifiedCrossReferenceNameConverter(obj, DatamartDSLPackage.eINSTANCE.getDatamartHierarchy_HierarchyRef());
+		}
+		if (obj instanceof DatamartDerivedMeasure) {
+            return qualifiedCrossReferenceNameConverter(obj, DatamartDSLPackage.eINSTANCE.getDatamartDerivedMeasure_DerivedRef());
+		}
+		if (obj instanceof DatamartAxis) {
+			DatamartAxis axis = (DatamartAxis) obj;
+			return qualifiedNameConverter.toQualifiedName(axis.getName().getLiteral());
+		}
+		if (obj instanceof DatamartSetAggregationFunction) {
+            return qualifiedCrossReferenceNameConverter(obj, DatamartDSLPackage.eINSTANCE.getDatamartSetAggregationFunction_Aggregation());
+		}
+		if (obj instanceof DatamartColumn) {
+			DatamartColumn column = (DatamartColumn) obj;
+			return qualifiedNameConverter.toQualifiedName(column.getColumnRef().getLiteral());
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+	
+	/**
+	 * Qualified cross reference name converter.
+	 *
+	 * @param obj
+	 *            the obj
+	 * @param feature
+	 *            the feature
+	 * @return the qualified name
+	 */
+	// this method evaluates the cross referenced name of an object without causing cyclic lazy linking errors
+	private QualifiedName qualifiedCrossReferenceNameConverter(EObject obj, EStructuralFeature feature) {
+		List<INode> nodes = NodeModelUtils.findNodesForFeature(obj, feature);
+		if (nodes.size() == 0) {
+			return QualifiedName.create("");
+		}
+		return qualifiedNameConverter.toQualifiedName(NodeModelUtils.getTokenText(nodes.get(0)));
+	}
+	
+	/**
+	 * Gets the fqn.
+	 *
+	 * @param lfeature
+	 *            the lfeature
+	 * @return the fqn
+	 */
+	public QualifiedName getFQN(LFeature lfeature){
+		   if(lfeature.getName() == null){
+		    return QualifiedName.create("");
+		   }
+		   LType type = (LType) lfeature.eContainer();
+		   LPackage pkg = extensions.getPackage(type);
+		   if (pkg != null && type != null) {
+		    final String qualifiedName = String.format("%s.%s.%s",
+		      pkg.getName(), type.getName(), lfeature.getName());
+		    if (qualifiedName == null)
+		     return null;
+		    return qualifiedNameConverter.toQualifiedName(qualifiedName);
+		   } else {
+		    return lfeature.getName() != null ? qualifiedNameConverter
+		      .toQualifiedName(lfeature.getName()) : null;
+		   }
+	  }
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/valueconverter/DatamartValueConverterService.java b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/valueconverter/DatamartValueConverterService.java
new file mode 100644
index 0000000..069fb1f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/src/org/eclipse/osbp/xtext/datamartdsl/valueconverter/DatamartValueConverterService.java
@@ -0,0 +1,57 @@
+/**
+ *                                                                            
+ *  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.datamartdsl.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 DatamartValueConverterService extends XbaseValueConverterService {
+
+	/** The converter. */
+	@Inject
+	private TRANSLATABLESTRINGValueConverter converter;
+
+	/**
+	 * Gets the qualified name with wild card.
+	 *
+	 * @return the qualified name with wild card
+	 */
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+	/**
+	 * Gets the translatable string value converter.
+	 *
+	 * @return the translatable string value converter
+	 */
+	@ValueConverter(rule = "TRANSLATABLESTRING")
+	public IValueConverter<String> getTranslatableStringValueConverter() {
+		return converter;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/formatting/DatamartDSLFormatter.java b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/formatting/DatamartDSLFormatter.java
new file mode 100644
index 0000000..765845c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/formatting/DatamartDSLFormatter.java
@@ -0,0 +1,74 @@
+/**
+ * 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.datamartdsl.formatting;
+
+import com.google.inject.Inject;
+import org.eclipse.osbp.utils.xtext.GenericFormatter;
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.ParserRule;
+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 DatamartDSLFormatter extends AbstractDeclarativeFormatter {
+  @Inject
+  private XtypeGrammarAccess grammarAccess;
+  
+  protected void configureFormatting(final FormattingConfig c) {
+    final GenericFormatter genericFormatter = new GenericFormatter();
+    Grammar _grammar = this.grammar.getGrammar();
+    AbstractRule _findRuleForName = GrammarUtil.findRuleForName(_grammar, "DatamartReference");
+    ParserRule referenceDef = ((ParserRule) _findRuleForName);
+    Grammar _grammar_1 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_1 = GrammarUtil.findRuleForName(_grammar_1, "DatamartSlicer");
+    ParserRule slicerDef = ((ParserRule) _findRuleForName_1);
+    Grammar _grammar_2 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_2 = GrammarUtil.findRuleForName(_grammar_2, "DatamartHierarchy");
+    ParserRule hierarchyDef = ((ParserRule) _findRuleForName_2);
+    Grammar _grammar_3 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_3 = GrammarUtil.findRuleForName(_grammar_3, "DatamartMeasure");
+    ParserRule measureDef = ((ParserRule) _findRuleForName_3);
+    Grammar _grammar_4 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_4 = GrammarUtil.findRuleForName(_grammar_4, "DatamartNumberOrElement");
+    ParserRule numOrElementDef = ((ParserRule) _findRuleForName_4);
+    Grammar _grammar_5 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_5 = GrammarUtil.findRuleForName(_grammar_5, "DatamartCondition");
+    ParserRule conditionDef = ((ParserRule) _findRuleForName_5);
+    Grammar _grammar_6 = this.grammar.getGrammar();
+    AbstractRule _findRuleForName_6 = GrammarUtil.findRuleForName(_grammar_6, "DatamartConditionalExpression");
+    ParserRule condExprDef = ((ParserRule) _findRuleForName_6);
+    FormattingConfig.NoLinewrapLocator _setNoLinewrap = c.setNoLinewrap();
+    _setNoLinewrap.before(referenceDef);
+    FormattingConfig.NoLinewrapLocator _setNoLinewrap_1 = c.setNoLinewrap();
+    _setNoLinewrap_1.between(slicerDef, hierarchyDef);
+    FormattingConfig.NoLinewrapLocator _setNoLinewrap_2 = c.setNoLinewrap();
+    _setNoLinewrap_2.between(conditionDef, condExprDef);
+    FormattingConfig.NoLinewrapLocator _setNoLinewrap_3 = c.setNoLinewrap();
+    _setNoLinewrap_3.between(hierarchyDef, measureDef);
+    FormattingConfig.NoLinewrapLocator _setNoLinewrap_4 = c.setNoLinewrap();
+    _setNoLinewrap_4.before(numOrElementDef);
+    Grammar _grammar_7 = this.grammar.getGrammar();
+    genericFormatter.formatFirstLevelBlocks(c, _grammar_7, "DatamartDefinition", "DatamartImport");
+    genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartDSLJvmModelInferrer.java
new file mode 100644
index 0000000..2b366a3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartDSLJvmModelInferrer.java
@@ -0,0 +1,6936 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.jvmmodel;
+
+import com.google.common.base.Objects;
+import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import javax.inject.Inject;
+import mondrian.rolap.RolapConnection;
+import org.apache.commons.lang3.StringUtils;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.bpm.api.IBPMEngine;
+import org.eclipse.osbp.bpm.api.IBPMTaskClient;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.NamingExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+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.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+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.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.persistence.IPersistenceService;
+import org.eclipse.osbp.preferences.EnumDatabaseVendor;
+import org.eclipse.osbp.ui.api.datamart.IDataMart;
+import org.eclipse.osbp.ui.api.datamart.IDualData;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.user.IUser;
+import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
+import org.eclipse.osbp.utils.common.EntityUtils;
+import org.eclipse.osbp.utils.common.IEntityIdModificationListenerView;
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.utils.entityhelper.DataType;
+import org.eclipse.osbp.utils.fillertext.FillerTextProvider;
+import org.eclipse.osbp.xtext.authorizationdsl.Role;
+import org.eclipse.osbp.xtext.authorizationdsl.RoleElement;
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntity;
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityAttribute;
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityFeature;
+import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityReference;
+import org.eclipse.osbp.xtext.authorizationdsl.RolePropertyEnum;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+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.CubeMeasure;
+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.datamart.common.ACubeDatamart;
+import org.eclipse.osbp.xtext.datamart.common.AEntityDatamart;
+import org.eclipse.osbp.xtext.datamart.common.ATaskDatamart;
+import org.eclipse.osbp.xtext.datamart.common.DatamartDefinitionUtil;
+import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet;
+import org.eclipse.osbp.xtext.datamart.common.sql.FillerTextResultSet;
+import org.eclipse.osbp.xtext.datamartdsl.Addition;
+import org.eclipse.osbp.xtext.datamartdsl.AggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression;
+import org.eclipse.osbp.xtext.datamartdsl.Conjunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter;
+import org.eclipse.osbp.xtext.datamartdsl.Disjunction;
+import org.eclipse.osbp.xtext.datamartdsl.Division;
+import org.eclipse.osbp.xtext.datamartdsl.Expression;
+import org.eclipse.osbp.xtext.datamartdsl.FunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.Multiplication;
+import org.eclipse.osbp.xtext.datamartdsl.OperatorEnum;
+import org.eclipse.osbp.xtext.datamartdsl.OrderEnum;
+import org.eclipse.osbp.xtext.datamartdsl.ParameterFunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerData;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateFuture;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDatePast;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDateType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerDoubleType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerIntegerType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedDoubleRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerSignedIntegerRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextParagraphs;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextSentences;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerTextWords;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerType;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedDoubleRange;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRandom;
+import org.eclipse.osbp.xtext.datamartdsl.PropertyFillerUnsignedIntegerRange;
+import org.eclipse.osbp.xtext.datamartdsl.SetAggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SetFunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SetParameterFunctionEnum;
+import org.eclipse.osbp.xtext.datamartdsl.SqlAggregationEnum;
+import org.eclipse.osbp.xtext.datamartdsl.Subtraction;
+import org.eclipse.osbp.xtext.datamartdsl.TaskFilterEnum;
+import org.eclipse.osbp.xtext.datamartdsl.TaskQueryColumnEnum;
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartModelGenerator;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmField;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.JvmMember;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.common.types.util.TypeReferences;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.junit.Test;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.slf4j.Logger;
+
+/**
+ * <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 DatamartDSLJvmModelInferrer extends AbstractModelInferrer {
+  /**
+   * convenience API to build and initialize JVM types and their members.
+   */
+  @Inject
+  @Extension
+  private JvmTypesBuilder _jvmTypesBuilder;
+  
+  @Inject
+  @Extension
+  private IQualifiedNameProvider _iQualifiedNameProvider;
+  
+  @Inject
+  @Extension
+  private NamingExtensions _namingExtensions;
+  
+  @Inject
+  @Extension
+  private DatamartModelGenerator generator;
+  
+  @Inject
+  @Extension
+  private TypeReferences _typeReferences;
+  
+  @Inject
+  @Extension
+  private AnnotationExtension _annotationExtension;
+  
+  @Inject
+  @Extension
+  private DataType dtType;
+  
+  private HashMap<String, Integer> sqlAliasCounter = CollectionLiterals.<String, Integer>newHashMap();
+  
+  private HashMap<String, DatamartProperty> sqlFilterMap = CollectionLiterals.<String, DatamartProperty>newHashMap();
+  
+  private ArrayList<String> sqlGrouping = CollectionLiterals.<String>newArrayList();
+  
+  private HashMap<String, LEntityAttribute> idMap = CollectionLiterals.<String, LEntityAttribute>newHashMap();
+  
+  private String datamartDtoMapper = ((String) null);
+  
+  private HashMap<String, LEntity> entityGrouping = new HashMap<String, LEntity>();
+  
+  private boolean ignoreEntityGrouping = false;
+  
+  private boolean sqlHasAggregate = false;
+  
+  private boolean sqlHasOrder = false;
+  
+  public static String pckgName = null;
+  
+  private String binderClassName = "";
+  
+  private Locale locale;
+  
+  public void generatePckgName(final DatamartPackage pckg, final IJvmDeclaredTypeAcceptor acceptor) {
+    String _name = pckg.getName();
+    DatamartDSLJvmModelInferrer.pckgName = _name;
+  }
+  
+  /**
+   * <p>infer method dispatches the neccessary routines to build fields, setter, getter, constructors and methods of the generated code.</p>
+   */
+  protected void _infer(final DatamartPackage datamart, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    this.generatePckgName(datamart, acceptor);
+    String _name = datamart.getName();
+    String _string = _name.toString();
+    String _concat = _string.concat("TestClass");
+    JvmGenericType cls = this._jvmTypesBuilder.toClass(datamart, _concat);
+    String _simpleName = cls.getSimpleName();
+    String _firstUpper = StringExtensions.toFirstUpper(_simpleName);
+    cls.setSimpleName(_firstUpper);
+    final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
+      public void apply(final JvmGenericType it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        QualifiedName _fullyQualifiedName = DatamartDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(datamart);
+        String _string = _fullyQualifiedName.toString();
+        it.setPackageName(_string);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+        DatamartDSLJvmModelInferrer.this.toTestCalls(it, datamart);
+      }
+    };
+    acceptor.<JvmGenericType>accept(cls, _function);
+    QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(datamart);
+    String _string_1 = _fullyQualifiedName.toString();
+    String _plus = (_string_1 + ".");
+    QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(datamart);
+    String _lastSegment = _fullyQualifiedName_1.getLastSegment();
+    String _firstUpper_1 = StringExtensions.toFirstUpper(_lastSegment);
+    String _plus_1 = (_plus + _firstUpper_1);
+    String _plus_2 = (_plus_1 + "ServiceBinder");
+    this.binderClassName = _plus_2;
+    String _name_1 = datamart.getName();
+    String _string_2 = _name_1.toString();
+    String _concat_1 = _string_2.concat("ServiceBinder");
+    JvmGenericType _class = this._jvmTypesBuilder.toClass(datamart, _concat_1);
+    cls = _class;
+    String _simpleName_1 = cls.getSimpleName();
+    String _firstUpper_2 = StringExtensions.toFirstUpper(_simpleName_1);
+    cls.setSimpleName(_firstUpper_2);
+    final Procedure1<JvmGenericType> _function_1 = new Procedure1<JvmGenericType>() {
+      public void apply(final JvmGenericType it) {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmAnnotationReference> _annotations_1 = it.getAnnotations();
+        JvmAnnotationReference _annotationRef_1 = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Component.class);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1);
+        QualifiedName _fullyQualifiedName = DatamartDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(datamart);
+        String _string = _fullyQualifiedName.toString();
+        it.setPackageName(_string);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+        DatamartDSLJvmModelInferrer.this.toBinderFields(it, datamart);
+        DatamartDSLJvmModelInferrer.this.toBinderOperations(it, datamart);
+      }
+    };
+    acceptor.<JvmGenericType>accept(cls, _function_1);
+    EList<DatamartDefinition> _definitions = datamart.getDefinitions();
+    for (final DatamartDefinition definition : _definitions) {
+      QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(definition);
+      String _plus_3 = (_fullyQualifiedName_2 + IDataMart.DATAMART_CLASS_POSTFIX);
+      JvmGenericType _class_1 = this._jvmTypesBuilder.toClass(definition, _plus_3);
+      final Procedure1<JvmGenericType> _function_2 = new Procedure1<JvmGenericType>() {
+        public void apply(final JvmGenericType it) {
+          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+          JvmAnnotationReference _annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+          QualifiedName _fullyQualifiedName = DatamartDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(datamart);
+          String _string = _fullyQualifiedName.toString();
+          it.setPackageName(_string);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+          DatamartSource _source = definition.getSource();
+          if ((_source instanceof DatamartEntity)) {
+            EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+            JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(AEntityDatamart.class);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+          }
+          DatamartSource _source_1 = definition.getSource();
+          if ((_source_1 instanceof DatamartCube)) {
+            EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
+            JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(ACubeDatamart.class);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeRef_1);
+          }
+          DatamartSource _source_2 = definition.getSource();
+          if ((_source_2 instanceof DatamartTask)) {
+            EList<JvmTypeReference> _superTypes_2 = it.getSuperTypes();
+            JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(ATaskDatamart.class);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_2, _typeRef_2);
+          }
+          DatamartDSLJvmModelInferrer.this.toFields(it, definition);
+          DatamartDSLJvmModelInferrer.this.toGetterSetter(it, definition);
+          DatamartDSLJvmModelInferrer.this.toOperations(it, definition);
+        }
+      };
+      acceptor.<JvmGenericType>accept(_class_1, _function_2);
+    }
+  }
+  
+  public void toTestCalls(final JvmGenericType type, final DatamartPackage datamart) {
+    JvmOperation operation = null;
+    EList<DatamartDefinition> _definitions = datamart.getDefinitions();
+    for (final DatamartDefinition definition : _definitions) {
+      {
+        String _name = definition.getName();
+        String _concat = "test".concat(_name);
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
+        final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+            JvmAnnotationReference _annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Test.class);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                String _allTestcalls = DatamartDSLJvmModelInferrer.this.getAllTestcalls(definition);
+                _builder.append(_allTestcalls, "");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method = this._jvmTypesBuilder.toMethod(definition, _concat, _typeRef, _function);
+        operation = _method;
+        EList<JvmMember> _members = type.getMembers();
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+      }
+    }
+  }
+  
+  public String getAllTestcalls(final DatamartDefinition definition) {
+    String body = "";
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(body, "");
+    String _name = definition.getName();
+    _builder.append(_name, "");
+    _builder.append("Datamart.Test");
+    String _name_1 = definition.getName();
+    _builder.append(_name_1, "");
+    _builder.append("();");
+    _builder.newLineIfNotEmpty();
+    body = _builder.toString();
+    return body;
+  }
+  
+  public void toBinderFields(final JvmDeclaredType type, final DatamartPackage datamart) {
+    JvmField field = null;
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Logger.class);
+    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("org.slf4j.LoggerFactory.getLogger(\"servicebinder\")");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(datamart, "log", _typeRef, _function);
+    field = _field;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IPersistenceService.class);
+    JvmField _field_1 = this._jvmTypesBuilder.toField(datamart, "persistenceService", _typeRef_1);
+    field = _field_1;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IBPMEngine.class);
+    JvmField _field_2 = this._jvmTypesBuilder.toField(datamart, "bpmEngine", _typeRef_2);
+    field = _field_2;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_2 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(IUserAccessService.class);
+    JvmField _field_3 = this._jvmTypesBuilder.toField(datamart, "userAccessService", _typeRef_3);
+    field = _field_3;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_3 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
+    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(IDSLMetadataService.class);
+    JvmField _field_4 = this._jvmTypesBuilder.toField(datamart, "dslMetadataService", _typeRef_4);
+    field = _field_4;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_4 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
+  }
+  
+  public void toBinderOperations(final JvmDeclaredType type, final DatamartPackage datamart) {
+    JvmOperation operation = null;
+    EList<JvmMember> _members = type.getMembers();
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IPersistenceService.class);
+    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setStatic(true);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return persistenceService;");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(datamart, "getPersistenceService", _typeRef, _function);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+    EList<JvmMember> _members_1 = type.getMembers();
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IBPMEngine.class);
+    final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setStatic(true);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return bpmEngine;");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(datamart, "getBpmEngine", _typeRef_1, _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+    EList<JvmMember> _members_2 = type.getMembers();
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IUserAccessService.class);
+    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setStatic(true);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return userAccessService;");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(datamart, "getUserAccessService", _typeRef_2, _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
+    EList<JvmMember> _members_3 = type.getMembers();
+    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(IDSLMetadataService.class);
+    final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setStatic(true);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return dslMetadataService;");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(datamart, "getDSLMetadataService", _typeRef_3, _function_3);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
+    EList<JvmMember> _members_4 = type.getMembers();
+    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        JvmAnnotationReference annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Reference.class);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IPersistenceService.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "persistenceService", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.persistenceService = persistenceService;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart PersistenceService bound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(datamart, this.generator.bindPersistenceMethod, _typeRef_4, _function_4);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+    EList<JvmMember> _members_5 = type.getMembers();
+    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_5 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IPersistenceService.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "persistenceService", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.persistenceService = null;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart PersistenceService unbound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(datamart, this.generator.unbindPersistenceMethod, _typeRef_5, _function_5);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
+    EList<JvmMember> _members_6 = type.getMembers();
+    JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_6 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        JvmAnnotationReference annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Reference.class);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.OPTIONAL);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.DYNAMIC);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IBPMEngine.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "bpmEngine", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.bpmEngine = bpmEngine;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart BPMEngine bound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(datamart, this.generator.bindBPMMethod, _typeRef_6, _function_6);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
+    EList<JvmMember> _members_7 = type.getMembers();
+    JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_7 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IBPMEngine.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "bpmEngine", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.bpmEngine = null;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart BPMEngine unbound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(datamart, this.generator.unbindBPMMethod, _typeRef_7, _function_7);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
+    EList<JvmMember> _members_8 = type.getMembers();
+    JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_8 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        JvmAnnotationReference annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Reference.class);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUserAccessService.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "userAccessService", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.userAccessService = userAccessService;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart UserAccessService bound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(datamart, this.generator.bindUserAccessMethod, _typeRef_8, _function_8);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
+    EList<JvmMember> _members_9 = type.getMembers();
+    JvmTypeReference _typeRef_9 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_9 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUserAccessService.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "userAccessService", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.userAccessService = null;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart UserAccessService unbound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(datamart, this.generator.unbindUserAccessMethod, _typeRef_9, _function_9);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
+    EList<JvmMember> _members_10 = type.getMembers();
+    JvmTypeReference _typeRef_10 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_10 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        JvmAnnotationReference annotationRef = DatamartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Reference.class);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
+        DatamartDSLJvmModelInferrer.this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDSLMetadataService.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "dslMetadataService", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.dslMetadataService = dslMetadataService;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart DSLMetadataService bound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(datamart, this.generator.bindDSLMetadataService, _typeRef_10, _function_10);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
+    EList<JvmMember> _members_11 = type.getMembers();
+    JvmTypeReference _typeRef_11 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+    final Procedure1<JvmOperation> _function_11 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        it.setVisibility(JvmVisibility.PUBLIC);
+        it.setSynchronized(true);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDSLMetadataService.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(datamart, "dslMetadataService", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("this.dslMetadataService = null;");
+            _builder.newLine();
+            _builder.append("log.debug(\"Datamart DSLMetadataService unbound\");");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(datamart, this.generator.unbindDSLMetadataService, _typeRef_11, _function_11);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
+  }
+  
+  /**
+   * <p>build the class variables for each datamart definition.</p>
+   */
+  public void toFields(final JvmDeclaredType type, final DatamartDefinition definition) {
+    final HashMap<String, LEntityAttribute> typesMap = CollectionLiterals.<String, LEntityAttribute>newHashMap();
+    JvmField field = null;
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Logger.class);
+    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("org.slf4j.LoggerFactory.getLogger(\"datamarts\")");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field = this._jvmTypesBuilder.toField(definition, "log", _typeRef, _function);
+    field = _field;
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IDualData.class);
+    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_2);
+    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_1, _typeRef_3);
+    final Procedure1<JvmField> _function_1 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("new HashMap<String,ArrayList<IDualData>>()");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field_1 = this._jvmTypesBuilder.toField(definition, "filterItems", _typeRef_4, _function_1);
+    field = _field_1;
+    field.setFinal(true);
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+    DatamartSource _source = definition.getSource();
+    if ((_source instanceof DatamartCube)) {
+      JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(String.class);
+      final Procedure1<JvmField> _function_2 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("\"");
+              String _createMDXStatement = DatamartDSLJvmModelInferrer.this.createMDXStatement(definition);
+              _builder.append(_createMDXStatement, "");
+              _builder.append("\"");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_2 = this._jvmTypesBuilder.toField(definition, "statement", _typeRef_5, _function_2);
+      field = _field_2;
+      EList<JvmMember> _members_2 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+      JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(RolapConnection.class);
+      final Procedure1<JvmField> _function_3 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("null");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_3 = this._jvmTypesBuilder.toField(definition, "connection", _typeRef_6, _function_3);
+      field = _field_3;
+      EList<JvmMember> _members_3 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
+      JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(DatamartDtoMapper.class);
+      final Procedure1<JvmField> _function_4 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("new DatamartDtoMapper()");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_4 = this._jvmTypesBuilder.toField(definition, "datamartDtoMapper", _typeRef_7, _function_4);
+      field = _field_4;
+      EList<JvmMember> _members_4 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
+    }
+    DatamartSource _source_1 = definition.getSource();
+    if ((_source_1 instanceof DatamartEntity)) {
+      JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_9 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_10 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_8, _typeRef_9);
+      final Procedure1<JvmField> _function_5 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("new HashMap<String,String>() ");
+              String _createSQLStatements = DatamartDSLJvmModelInferrer.this.createSQLStatements(definition, typesMap);
+              _builder.append(_createSQLStatements, "");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_5 = this._jvmTypesBuilder.toField(definition, "statements", _typeRef_10, _function_5);
+      field = _field_5;
+      EList<JvmMember> _members_5 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
+      JvmTypeReference _typeRef_11 = this._typeReferenceBuilder.typeRef(DatamartDtoMapper.class);
+      final Procedure1<JvmField> _function_6 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append(DatamartDSLJvmModelInferrer.this.datamartDtoMapper, "");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_6 = this._jvmTypesBuilder.toField(definition, "datamartDtoMapper", _typeRef_11, _function_6);
+      field = _field_6;
+      EList<JvmMember> _members_6 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field);
+      JvmTypeReference _typeRef_12 = this._typeReferenceBuilder.typeRef(Connection.class);
+      final Procedure1<JvmField> _function_7 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("null");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_7 = this._jvmTypesBuilder.toField(definition, "connection", _typeRef_12, _function_7);
+      field = _field_7;
+      EList<JvmMember> _members_7 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field);
+      JvmTypeReference _typeRef_13 = this._typeReferenceBuilder.typeRef(Integer.class);
+      JvmTypeReference _typeRef_14 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_15 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_14);
+      JvmTypeReference _typeRef_16 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_13, _typeRef_15);
+      final Procedure1<JvmField> _function_8 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("new HashMap<Integer,ArrayList<String>>() ");
+              String _createAxisMap = DatamartDSLJvmModelInferrer.this.createAxisMap(definition);
+              _builder.append(_createAxisMap, "");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_8 = this._jvmTypesBuilder.toField(definition, "axisMap", _typeRef_16, _function_8);
+      field = _field_8;
+      EList<JvmMember> _members_8 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field);
+    }
+    DatamartSource _source_2 = definition.getSource();
+    if ((_source_2 instanceof DatamartTask)) {
+      JvmTypeReference _typeRef_17 = this._typeReferenceBuilder.typeRef(Integer.class);
+      JvmTypeReference _typeRef_18 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_19 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_18);
+      JvmTypeReference _typeRef_20 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_17, _typeRef_19);
+      final Procedure1<JvmField> _function_9 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("new HashMap<Integer,ArrayList<String>>() ");
+              String _createAxisMap = DatamartDSLJvmModelInferrer.this.createAxisMap(definition);
+              _builder.append(_createAxisMap, "");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_9 = this._jvmTypesBuilder.toField(definition, "axisMap", _typeRef_20, _function_9);
+      field = _field_9;
+      EList<JvmMember> _members_9 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_9, field);
+      JvmTypeReference _typeRef_21 = this._typeReferenceBuilder.typeRef(DatamartDtoMapper.class);
+      final Procedure1<JvmField> _function_10 = new Procedure1<JvmField>() {
+        public void apply(final JvmField it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("new DatamartDtoMapper()");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+        }
+      };
+      JvmField _field_10 = this._jvmTypesBuilder.toField(definition, "datamartDtoMapper", _typeRef_21, _function_10);
+      field = _field_10;
+      EList<JvmMember> _members_10 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_10, field);
+    }
+    JvmTypeReference _typeRef_22 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_23 = this._typeReferenceBuilder.typeRef(IDataMart.EType.class);
+    JvmTypeReference _typeRef_24 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_22, _typeRef_23);
+    final Procedure1<JvmField> _function_11 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("new HashMap<String,EType>() ");
+            String _createIdMap = DatamartDSLJvmModelInferrer.this.createIdMap(definition);
+            _builder.append(_createIdMap, "");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field_11 = this._jvmTypesBuilder.toField(definition, "idMap", _typeRef_24, _function_11);
+    field = _field_11;
+    EList<JvmMember> _members_11 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_11, field);
+    JvmTypeReference _typeRef_25 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_26 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_27 = this._typeReferenceBuilder.typeRef(IDataMart.EType.class);
+    JvmTypeReference _typeRef_28 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_26, _typeRef_27);
+    JvmTypeReference _typeRef_29 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_25, _typeRef_28);
+    final Procedure1<JvmField> _function_12 = new Procedure1<JvmField>() {
+      public void apply(final JvmField it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("new HashMap<String,HashMap<String,EType>>() ");
+            String _createTypesMaps = DatamartDSLJvmModelInferrer.this.createTypesMaps(definition, typesMap);
+            _builder.append(_createTypesMaps, "");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
+      }
+    };
+    JvmField _field_12 = this._jvmTypesBuilder.toField(definition, "typesMap", _typeRef_29, _function_12);
+    field = _field_12;
+    EList<JvmMember> _members_12 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_12, field);
+  }
+  
+  /**
+   * <p>build the getters and setters from class variables of datamart definition.</p>
+   */
+  public void toGetterSetter(final JvmDeclaredType type, final DatamartDefinition definition) {
+    JvmOperation operation = null;
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IDataMart.EType.class);
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef, _typeRef_1);
+    JvmOperation _getter = this._jvmTypesBuilder.toGetter(definition, "idMap", _typeRef_2);
+    operation = _getter;
+    operation.setVisibility(JvmVisibility.PUBLIC);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+    boolean _or = false;
+    DatamartSource _source = definition.getSource();
+    if ((_source instanceof DatamartEntity)) {
+      _or = true;
+    } else {
+      DatamartSource _source_1 = definition.getSource();
+      _or = (_source_1 instanceof DatamartTask);
+    }
+    if (_or) {
+      JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Integer.class);
+      JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_4);
+      JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_3, _typeRef_5);
+      JvmOperation _getter_1 = this._jvmTypesBuilder.toGetter(definition, "axisMap", _typeRef_6);
+      operation = _getter_1;
+      operation.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmMember> _members_1 = type.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+    }
+  }
+  
+  /**
+   * <p>build the methods separately for cube, entity and task or SQL and MDX respective.</p>
+   */
+  public void toOperations(final JvmDeclaredType type, final DatamartDefinition definition) {
+    JvmOperation operation = null;
+    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef, _typeRef_1);
+    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return new HashMap<String,String>() ");
+            String _createFilterMap = DatamartDSLJvmModelInferrer.this.createFilterMap(definition, null);
+            _builder.append(_createFilterMap, "");
+            _builder.append(";");
+            _builder.newLineIfNotEmpty();
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(definition, "initializeFilterMap", _typeRef_2, _function);
+    operation = _method;
+    operation.setVisibility(JvmVisibility.PROTECTED);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
+    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(int.class);
+    final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append("return ");
+            int _getNumAxes = DatamartDSLJvmModelInferrer.this.getGetNumAxes(definition);
+            _builder.append(_getNumAxes, "");
+            _builder.append(";");
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(definition, "getNumberOfAxes", _typeRef_3, _function_1);
+    operation = _method_1;
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
+    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(String.class);
+    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(IDataMart.EType.class);
+    JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_4, _typeRef_5);
+    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
+      public void apply(final JvmOperation it) {
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+        JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+          public void apply(final ITreeAppendable it) {
+            StringConcatenation _builder = new StringConcatenation();
+            {
+              EList<DatamartRole> _roles = definition.getRoles();
+              int _size = _roles.size();
+              boolean _greaterThan = (_size > 0);
+              if (_greaterThan) {
+                _builder.append("if (user == null || ");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("user.getUserName().equals(\"");
+                _builder.append(IUserAccessService.ADMINISTRATOR, "\t");
+                _builder.append("\") ||");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t");
+                _builder.append(".getUserAccessService().getRoles() == null) ");
+                _builder.newLineIfNotEmpty();
+                _builder.append("{");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("return typesMap.get(\"");
+                _builder.append(IUserAccessService.ADMINISTRATOR, "\t");
+                _builder.append("\");");
+                _builder.newLineIfNotEmpty();
+                _builder.append("} else {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("// find the role with the most authorized items");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("String bestRole = null;");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("int bestSize = -1;");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("for(String role:");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t");
+                _builder.append(".getUserAccessService().getRoles()) {");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t");
+                _builder.append("if (typesMap.containsKey(role)) {");
+                _builder.newLine();
+                _builder.append("\t\t\t");
+                _builder.append("if (bestSize < typesMap.get(role).size()) {");
+                _builder.newLine();
+                _builder.append("\t\t\t\t");
+                _builder.append("bestSize = typesMap.get(role).size();");
+                _builder.newLine();
+                _builder.append("\t\t\t\t");
+                _builder.append("bestRole = role;");
+                _builder.newLine();
+                _builder.append("\t\t\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("if (bestRole != null) {");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("return typesMap.get(bestRole);");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("return null;");
+                _builder.newLine();
+                _builder.append("}");
+                _builder.newLine();
+              } else {
+                _builder.append("return typesMap.get(\"");
+                _builder.append(IUserAccessService.ADMINISTRATOR, "");
+                _builder.append("\");");
+                _builder.newLineIfNotEmpty();
+              }
+            }
+            it.append(_builder);
+          }
+        };
+        DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+      }
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(definition, "getTypesMap", _typeRef_6, _function_2);
+    operation = _method_2;
+    operation.setVisibility(JvmVisibility.PUBLIC);
+    EList<JvmMember> _members_2 = type.getMembers();
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
+    DatamartSource _source = definition.getSource();
+    if ((_source instanceof DatamartTask)) {
+      EList<JvmMember> _members_3 = type.getMembers();
+      JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(String.class);
+      final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("return null;");
+              _builder.newLine();
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(definition, "getPersistenceUnit", _typeRef_7, _function_3);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
+      EList<JvmMember> _members_4 = type.getMembers();
+      JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(Connection.class);
+      final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("return null;");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(definition, "connect", _typeRef_8, _function_4);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+      EList<JvmMember> _members_5 = type.getMembers();
+      JvmTypeReference _typeRef_9 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_5 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(definition, "disconnect", _typeRef_9, _function_5);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
+      JvmTypeReference _typeRef_10 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_11 = this._typeReferenceBuilder.typeRef(IDualData.class);
+      JvmTypeReference _typeRef_12 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_11);
+      JvmTypeReference _typeRef_13 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_10, _typeRef_12);
+      final Procedure1<JvmOperation> _function_6 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("filterItems.clear();");
+              _builder.newLine();
+              _builder.append("for (String filterID : getFilterIds()) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("if (getFilter(filterID).equals(\"Groups\")) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("ArrayList<IDualData> dataArray = new ArrayList<IDualData>();");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("for(String grp : ");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+              _builder.append(".getBpmEngine().getGroups().keySet()) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t\t");
+              _builder.append("IDualData data = new DatamartData();");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("data.setSelectionValue(grp);");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("data.setUnformattedValue(grp);");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("dataArray.add(data);");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("filterItems.put(filterID, dataArray);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("if (getFilter(filterID).equals(\"Users\")) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("ArrayList<IDualData> dataArray = new ArrayList<IDualData>();");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("for(String grp : ");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+              _builder.append(".getBpmEngine().getUsers().keySet()) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t\t");
+              _builder.append("IDualData data = new DatamartData();");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("data.setSelectionValue(grp);");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("data.setUnformattedValue(grp);");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("dataArray.add(data);");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("filterItems.put(filterID, dataArray);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("return filterItems;");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(definition, "getFilters", _typeRef_13, _function_6);
+      operation = _method_6;
+      EList<JvmMember> _members_6 = type.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, operation);
+      EList<JvmMember> _members_7 = type.getMembers();
+      JvmTypeReference _typeRef_14 = this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+      final Procedure1<JvmOperation> _function_7 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IBPMTaskClient.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "client", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+          JvmFormalParameter _parameter_1 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef_1);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+          JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmTypeReference _typeRef_3 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmTypeReference _typeRef_4 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Map.class, _typeRef_2, _typeRef_3);
+          JvmFormalParameter _parameter_2 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "filteredItems", _typeRef_4);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("if(user != null) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("List<TaskSummary> tasks = client.getUserTaskList(user, false);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("if (tasks == null || tasks.size() == 0) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("tasks = client.getUserTaskList(user, true);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("return (new DerivedCellSet(new SqlCellSet(tasks, getAxisMap()), null,");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+              _builder.append(".getDSLMetadataService(),");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t");
+              _builder.append("user));");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("return null;");
+              _builder.newLine();
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(definition, "getResults", _typeRef_14, _function_7);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
+      EList<JvmMember> _members_8 = type.getMembers();
+      JvmTypeReference _typeRef_15 = this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+      final Procedure1<JvmOperation> _function_8 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IBPMTaskClient.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "client", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+          JvmFormalParameter _parameter_1 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef_1);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+          JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Long.class);
+          JvmFormalParameter _parameter_2 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "taskId", _typeRef_2);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("List<TaskSummary> myTasks = new ArrayList<TaskSummary>(); ");
+              _builder.newLine();
+              _builder.append("myTasks.add(client.getUserTask(taskId, user));");
+              _builder.newLine();
+              _builder.append("return (new DerivedCellSet(new SqlCellSet(myTasks, getAxisMap()), null,");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t");
+              _builder.append(".getDSLMetadataService(), user));");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(definition, "getResultsByTaskId", _typeRef_15, _function_8);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("Test");
+      String _name = definition.getName();
+      _builder.append(_name, "");
+      JvmTypeReference _typeRef_16 = this._typeReferenceBuilder.typeRef(String.class);
+      final Procedure1<JvmOperation> _function_9 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          it.setStatic(true);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              String _name = definition.getName();
+              _builder.append(_name, "");
+              _builder.append("Datamart ");
+              String _name_1 = definition.getName();
+              String _lowerCase = _name_1.toLowerCase();
+              _builder.append(_lowerCase, "");
+              _builder.append(" = new ");
+              String _name_2 = definition.getName();
+              _builder.append(_name_2, "");
+              _builder.append("Datamart();");
+              _builder.newLineIfNotEmpty();
+              _builder.append("HashMap<String,String> filteredItems = new HashMap<String,String>();");
+              _builder.newLine();
+              _builder.append("if (");
+              String _name_3 = definition.getName();
+              String _lowerCase_1 = _name_3.toLowerCase();
+              _builder.append(_lowerCase_1, "");
+              _builder.append(".getFiltersCount() > 0) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              String _name_4 = definition.getName();
+              String _lowerCase_2 = _name_4.toLowerCase();
+              _builder.append(_lowerCase_2, "\t");
+              _builder.append(".getFilters(null);");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              _builder.append("for (String filterID : ");
+              String _name_5 = definition.getName();
+              String _lowerCase_3 = _name_5.toLowerCase();
+              _builder.append(_lowerCase_3, "\t");
+              _builder.append(".filterItems.keySet()) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t");
+              _builder.append("filteredItems.put(filterID, \"\'\"+");
+              String _name_6 = definition.getName();
+              String _lowerCase_4 = _name_6.toLowerCase();
+              _builder.append(_lowerCase_4, "\t\t");
+              _builder.append(".filterItems.get(filterID).iterator().next().getSelectionValue()+\"\'\");");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("org.eclipse.osbp.vaaclipse.addons.softwarefactory.bpmImpl.BPMTaskClient client = new org.eclipse.osbp.vaaclipse.addons.softwarefactory.bpmImpl.BPMTaskClient();");
+              _builder.newLine();
+              _builder.append("DerivedCellSet cellset = ");
+              String _name_7 = definition.getName();
+              String _lowerCase_5 = _name_7.toLowerCase();
+              _builder.append(_lowerCase_5, "");
+              _builder.append(".getResults(client, new User(\"");
+              _builder.append(IUserAccessService.ADMINISTRATOR, "");
+              _builder.append("\"), filteredItems);");
+              _builder.newLineIfNotEmpty();
+              _builder.append("org.junit.Assert.assertNotNull(cellset);");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(definition, _builder.toString(), _typeRef_16, _function_9);
+      operation = _method_9;
+      JvmTypeReference _typeRef_17 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      operation.setReturnType(_typeRef_17);
+      JvmAnnotationReference annRef = this._annotationTypesBuilder.annotationRef(Test.class);
+      EList<JvmAnnotationReference> _annotations = operation.getAnnotations();
+      _annotations.add(annRef);
+      EList<JvmMember> _members_9 = type.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, operation);
+    }
+    DatamartSource _source_1 = definition.getSource();
+    if ((_source_1 instanceof DatamartCube)) {
+      DatamartSource _source_2 = definition.getSource();
+      CubeType _cubeRef = ((DatamartCube) _source_2).getCubeRef();
+      CubeTypeEntity _cubeTypeEntity = _cubeRef.getCubeTypeEntity();
+      boolean _notEquals = (!Objects.equal(_cubeTypeEntity, null));
+      if (_notEquals) {
+        DatamartSource _source_3 = definition.getSource();
+        CubeType _cubeRef_1 = ((DatamartCube) _source_3).getCubeRef();
+        CubeTypeEntity _cubeTypeEntity_1 = _cubeRef_1.getCubeTypeEntity();
+        CubeEntity _entityRef = _cubeTypeEntity_1.getEntityRef();
+        final LEntity entity = _entityRef.getEntityValue();
+        EList<JvmMember> _members_10 = type.getMembers();
+        JvmTypeReference _typeRef_18 = this._typeReferenceBuilder.typeRef(String.class);
+        final Procedure1<JvmOperation> _function_10 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("return \"");
+                String _persistenceUnit = ((LEntity) entity).getPersistenceUnit();
+                _builder.append(_persistenceUnit, "");
+                _builder.append("\";");
+                _builder.newLineIfNotEmpty();
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(definition, "getPersistenceUnit", _typeRef_18, _function_10);
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
+        EList<JvmMember> _members_11 = type.getMembers();
+        JvmTypeReference _typeRef_19 = this._typeReferenceBuilder.typeRef(RolapConnection.class);
+        final Procedure1<JvmOperation> _function_11 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("if (connection == null) {   \t\t\t");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("try {");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("connection = ");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+                _builder.append(".getPersistenceService().getMondrianConnection(getPersistenceUnit(), \"");
+                DatamartSource _source = definition.getSource();
+                CubeType _cubeRef = ((DatamartCube) _source).getCubeRef();
+                EObject _eContainer = _cubeRef.eContainer();
+                QualifiedName _fullyQualifiedName = DatamartDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(((CubePackage) _eContainer));
+                _builder.append(_fullyQualifiedName, "\t\t");
+                _builder.append("\");");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+                _builder.append(".getPersistenceService().registerPersistenceUnit(getPersistenceUnit(), ");
+                QualifiedName _fullyQualifiedName_1 = DatamartDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(((LEntity) entity));
+                _builder.append(_fullyQualifiedName_1, "\t\t");
+                _builder.append(".class);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                _builder.append("} catch (SQLException e) {");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("log.error(e.getLocalizedMessage());");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("return (connection);");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("return (connection);");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(definition, "connect", _typeRef_19, _function_11);
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
+        EList<JvmMember> _members_12 = type.getMembers();
+        JvmTypeReference _typeRef_20 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+        final Procedure1<JvmOperation> _function_12 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("if (connection != null) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("connection.close();");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("connection = null;");
+                _builder.newLine();
+                _builder.append("}");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_12 = this._jvmTypesBuilder.toMethod(definition, "disconnect", _typeRef_20, _function_12);
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_12, _method_12);
+        JvmTypeReference _typeRef_21 = this._typeReferenceBuilder.typeRef(String.class);
+        JvmTypeReference _typeRef_22 = this._typeReferenceBuilder.typeRef(IDualData.class);
+        JvmTypeReference _typeRef_23 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_22);
+        JvmTypeReference _typeRef_24 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_21, _typeRef_23);
+        final Procedure1<JvmOperation> _function_13 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            EList<JvmFormalParameter> _parameters = it.getParameters();
+            JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+            JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("filterItems.clear();");
+                _builder.newLine();
+                _builder.append("connect();");
+                _builder.newLine();
+                _builder.append("if (connection != null) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("for (String filterID : getFilterIds()) {");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("DerivedCellSet cellSet = new DerivedCellSet(");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+                _builder.append(".getPersistenceService().sendQuery(connection,getFilter(filterID)),");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t\t");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t\t");
+                _builder.append(".getDSLMetadataService(),");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t\t");
+                _builder.append("user);");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("List<DerivedAxis> axes = cellSet.getAxes();");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("DerivedAxis columnsAxis = axes.get(Axis.COLUMNS.ordinal());");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("ArrayList<IDualData> filterItemList = new ArrayList<IDualData>();");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("for (DerivedPosition position : columnsAxis.getPositions()) {");
+                _builder.newLine();
+                _builder.append("\t\t\t");
+                _builder.append("DerivedMember measure = position.getMembers().get(0);");
+                _builder.newLine();
+                _builder.append("\t\t\t");
+                _builder.append("IDualData data = new DatamartData();");
+                _builder.newLine();
+                _builder.append("\t\t\t");
+                _builder.append("data.setUnformattedValue(measure.getUniqueName());");
+                _builder.newLine();
+                _builder.append("\t\t\t");
+                _builder.append("filterItemList.add(data);");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("\t\t");
+                _builder.append("filterItems.put(filterID, filterItemList);");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("disconnect();");
+                _builder.newLine();
+                _builder.append("return filterItems;");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_13 = this._jvmTypesBuilder.toMethod(definition, "getFilters", _typeRef_24, _function_13);
+        operation = _method_13;
+        EList<JvmMember> _members_13 = type.getMembers();
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_13, operation);
+        JvmTypeReference _typeRef_25 = this._typeReferenceBuilder.typeRef(String.class);
+        final Procedure1<JvmOperation> _function_14 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            EList<JvmFormalParameter> _parameters = it.getParameters();
+            JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+            JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+            JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Map.class, _typeRef, _typeRef_1);
+            JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "filteredItems", _typeRef_2);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("String filteredStatement = statement;");
+                _builder.newLine();
+                _builder.append("for (String filterID : filteredItems.keySet()) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("String filterValue = filteredItems.get(filterID).replace(\"\'\",\"\");");
+                _builder.newLine();
+                _builder.append("\t  \t");
+                _builder.append("filteredStatement = filteredStatement.replace(filterID, filterValue);");
+                _builder.newLine();
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("filteredStatement = filteredStatement.replace(\"<empty>,\",\"\").replace(\",<empty>\",\"\").replace(\"<empty>\",\"\");");
+                _builder.newLine();
+                _builder.append("log.debug(\"");
+                String _name = definition.getName();
+                _builder.append(_name, "");
+                _builder.append(":\"+filteredStatement);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("return filteredStatement;");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_14 = this._jvmTypesBuilder.toMethod(definition, "setFilters", _typeRef_25, _function_14);
+        operation = _method_14;
+        EList<JvmMember> _members_14 = type.getMembers();
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_14, operation);
+        EList<JvmMember> _members_15 = type.getMembers();
+        JvmTypeReference _typeRef_26 = this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+        final Procedure1<JvmOperation> _function_15 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            EList<JvmFormalParameter> _parameters = it.getParameters();
+            JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+            JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+            EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+            JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+            JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+            JvmTypeReference _typeRef_3 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Map.class, _typeRef_1, _typeRef_2);
+            JvmFormalParameter _parameter_1 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "filteredItems", _typeRef_3);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+            EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+            JvmTypeReference _typeRef_4 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Class.class);
+            JvmFormalParameter _parameter_2 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "operativeDtoClass", _typeRef_4);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+            EList<JvmFormalParameter> _parameters_3 = it.getParameters();
+            JvmTypeReference _typeRef_5 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+            JvmTypeReference _typeRef_6 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(List.class, _typeRef_5);
+            JvmFormalParameter _parameter_3 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "operativeDtos", _typeRef_6);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("DerivedCellSet derivedCellSet = null;");
+                _builder.newLine();
+                _builder.append("connect();");
+                _builder.newLine();
+                _builder.append("if (connection != null) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("derivedCellSet = new DerivedCellSet(");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t");
+                _builder.append(".getPersistenceService().sendQuery(connection, setFilters(filteredItems)),");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t\t");
+                _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t\t");
+                _builder.append(".getDSLMetadataService(),");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t\t");
+                _builder.append("user);");
+                _builder.newLine();
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("disconnect();");
+                _builder.newLine();
+                _builder.append("return derivedCellSet;");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_15 = this._jvmTypesBuilder.toMethod(definition, "getResults", _typeRef_26, _function_15);
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_15, _method_15);
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("Test");
+        String _name_1 = definition.getName();
+        _builder_1.append(_name_1, "");
+        JvmTypeReference _typeRef_27 = this._typeReferenceBuilder.typeRef(String.class);
+        final Procedure1<JvmOperation> _function_16 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            it.setStatic(true);
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                String _name = definition.getName();
+                _builder.append(_name, "");
+                _builder.append("Datamart ");
+                String _name_1 = definition.getName();
+                String _lowerCase = _name_1.toLowerCase();
+                _builder.append(_lowerCase, "");
+                _builder.append(" = new ");
+                String _name_2 = definition.getName();
+                _builder.append(_name_2, "");
+                _builder.append("Datamart();");
+                _builder.newLineIfNotEmpty();
+                _builder.append("HashMap<String,String> filteredItems = new HashMap<String,String>();");
+                _builder.newLine();
+                _builder.append("if (");
+                String _name_3 = definition.getName();
+                String _lowerCase_1 = _name_3.toLowerCase();
+                _builder.append(_lowerCase_1, "");
+                _builder.append(".getFiltersCount() > 0) {");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                String _name_4 = definition.getName();
+                String _lowerCase_2 = _name_4.toLowerCase();
+                _builder.append(_lowerCase_2, "\t");
+                _builder.append(".getFilters(null);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                _builder.append("for (String filterID : ");
+                String _name_5 = definition.getName();
+                String _lowerCase_3 = _name_5.toLowerCase();
+                _builder.append(_lowerCase_3, "\t");
+                _builder.append(".filterItems.keySet()) {");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t\t");
+                _builder.append("filteredItems.put(filterID, ");
+                String _name_6 = definition.getName();
+                String _lowerCase_4 = _name_6.toLowerCase();
+                _builder.append(_lowerCase_4, "\t\t");
+                _builder.append(".filterItems.get(filterID).iterator().next().getSelectionValue());");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("}");
+                _builder.newLine();
+                _builder.append("DerivedCellSet cellset = ");
+                String _name_7 = definition.getName();
+                String _lowerCase_5 = _name_7.toLowerCase();
+                _builder.append(_lowerCase_5, "");
+                _builder.append(".getResults(new User(\"");
+                _builder.append(IUserAccessService.ADMINISTRATOR, "");
+                _builder.append("\"), filteredItems, null, null);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("org.junit.Assert.assertNotNull(cellset);");
+                _builder.newLine();
+                String _name_8 = definition.getName();
+                String _lowerCase_6 = _name_8.toLowerCase();
+                _builder.append(_lowerCase_6, "");
+                _builder.append(".disconnect();");
+                it.append(_builder);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_16 = this._jvmTypesBuilder.toMethod(definition, _builder_1.toString(), _typeRef_27, _function_16);
+        operation = _method_16;
+        JvmTypeReference _typeRef_28 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+        operation.setReturnType(_typeRef_28);
+        JvmAnnotationReference annRef_1 = this._annotationTypesBuilder.annotationRef(Test.class);
+        EList<JvmAnnotationReference> _annotations_1 = operation.getAnnotations();
+        _annotations_1.add(annRef_1);
+        EList<JvmMember> _members_16 = type.getMembers();
+        this._jvmTypesBuilder.<JvmOperation>operator_add(_members_16, operation);
+      }
+    }
+    DatamartSource _source_4 = definition.getSource();
+    if ((_source_4 instanceof DatamartEntity)) {
+      EList<JvmMember> _members_17 = type.getMembers();
+      JvmTypeReference _typeRef_29 = this._typeReferenceBuilder.typeRef(String.class);
+      final Procedure1<JvmOperation> _function_17 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("return \"");
+              DatamartSource _source = definition.getSource();
+              LEntity _entityRef = null;
+              if (((DatamartEntity) _source)!=null) {
+                _entityRef=((DatamartEntity) _source).getEntityRef();
+              }
+              String _persistenceUnit = null;
+              if (_entityRef!=null) {
+                _persistenceUnit=_entityRef.getPersistenceUnit();
+              }
+              _builder.append(_persistenceUnit, "");
+              _builder.append("\";");
+              _builder.newLineIfNotEmpty();
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_17 = this._jvmTypesBuilder.toMethod(definition, "getPersistenceUnit", _typeRef_29, _function_17);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_17, _method_17);
+      EList<JvmMember> _members_18 = type.getMembers();
+      JvmTypeReference _typeRef_30 = this._typeReferenceBuilder.typeRef(Connection.class);
+      final Procedure1<JvmOperation> _function_18 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("if (connection == null) {   \t\t\t");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("try {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("connection = ");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+              _builder.append(".getPersistenceService().getPersistenceUnitConnection(getPersistenceUnit());");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+              _builder.append(".getPersistenceService().registerPersistenceUnit(getPersistenceUnit(), ");
+              DatamartSource _source = definition.getSource();
+              LEntity _entityRef = null;
+              if (((DatamartEntity) _source)!=null) {
+                _entityRef=((DatamartEntity) _source).getEntityRef();
+              }
+              QualifiedName _fullyQualifiedName = null;
+              if (_entityRef!=null) {
+                _fullyQualifiedName=DatamartDSLJvmModelInferrer.this._iQualifiedNameProvider.getFullyQualifiedName(_entityRef);
+              }
+              _builder.append(_fullyQualifiedName, "\t\t");
+              _builder.append(".class);");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              _builder.append("} catch (SQLException e) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("log.error(e.getLocalizedMessage());");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("return (connection);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("return (connection);");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_18 = this._jvmTypesBuilder.toMethod(definition, "connect", _typeRef_30, _function_18);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_18, _method_18);
+      EList<JvmMember> _members_19 = type.getMembers();
+      JvmTypeReference _typeRef_31 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_19 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("if (connection != null) {   \t\t\t");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("try {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("connection.close();");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("connection = null;");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("} catch (SQLException e) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("log.error(e.getLocalizedMessage());");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_19 = this._jvmTypesBuilder.toMethod(definition, "disconnect", _typeRef_31, _function_19);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_19, _method_19);
+      JvmTypeReference _typeRef_32 = this._typeReferenceBuilder.typeRef(String.class);
+      JvmTypeReference _typeRef_33 = this._typeReferenceBuilder.typeRef(IDualData.class);
+      JvmTypeReference _typeRef_34 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_33);
+      JvmTypeReference _typeRef_35 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_32, _typeRef_34);
+      final Procedure1<JvmOperation> _function_20 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("filterItems.clear();");
+              _builder.newLine();
+              _builder.append("connect();");
+              _builder.newLine();
+              _builder.append("if (connection != null) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("try {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("for (String filterID : getFilterIds()) {");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("if (!getFilter(filterID).contains(\"");
+              _builder.append(IDataMart.filterIdPlaceholder, "\t\t\t");
+              _builder.append("\")) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t\t\t");
+              _builder.append("ArrayList<IDualData> filterItemList = new ArrayList<IDualData>();");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("ResultSet rs = connection.createStatement().executeQuery(getFilter(filterID));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("if (rs != null) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t");
+              _builder.append("while (rs.next()) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t");
+              _builder.append("int type = rs.getMetaData().getColumnType(1);");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t");
+              _builder.append("IDualData data = new DatamartData();");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t");
+              _builder.append("switch (type) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.DATE:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setSelectionValue(\"to_date(\'\"+rs.getDate(1).toString().replace(\".0\",\"\")+\"\',\'YYYY-MM-DD HH24:MI:SS\')\");");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("if (user == null) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(rs.getDate(1).toString());");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("} else {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t\t");
+              _builder.append("data.setUnformattedValue(SimpleDateFormatter.getFormat(\"LONGDATE\", user.getLocale()).format(rs.getDate(1)));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("break;");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.TIMESTAMP:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setSelectionValue(\"to_timestamp(\'\"+rs.getTimestamp(1).toString().replace(\".0\",\"\")+\"\',\'YYYY-MM-DD HH24:MI:SS\')\");");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("if (user == null) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(rs.getDate(1).toString());");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("} else {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(SimpleDateFormatter.getFormat(\"LONGDATE\", user.getLocale()).format(rs.getTimestamp(1)));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t  \t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("break;");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.DECIMAL:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(rs.getBigDecimal(1).toPlainString());");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setSelectionValue(rs.getBigDecimal(1).toPlainString());");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("break;");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.NUMERIC:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.DOUBLE:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(Double.toString(rs.getDouble(1)));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setSelectionValue(Double.toString(rs.getDouble(1)));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("break;");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.FLOAT:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(Float.toString(rs.getFloat(1)));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setSelectionValue(Float.toString(rs.getFloat(1)));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("break;");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.CHAR:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.NCHAR:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.NVARCHAR:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t");
+              _builder.append("case java.sql.Types.VARCHAR:");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setUnformattedValue(rs.getString(1));");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("data.setSelectionValue(\"\'\"+rs.getString(1)+\"\'\");");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t\t\t");
+              _builder.append("break;");
+              _builder.newLine();
+              _builder.append("\t\t\t\t  \t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t\t");
+              _builder.append("filterItemList.add(data);");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t");
+              _builder.append("rs.close();");
+              _builder.newLine();
+              _builder.append("\t\t\t\t\t");
+              _builder.append("filterItems.put(filterID, filterItemList);");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("} catch (SQLException e) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("log.error(e.getLocalizedMessage());");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("disconnect();");
+              _builder.newLine();
+              _builder.append("return filterItems;");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_20 = this._jvmTypesBuilder.toMethod(definition, "getFilters", _typeRef_35, _function_20);
+      operation = _method_20;
+      EList<JvmMember> _members_20 = type.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_20, operation);
+      JvmTypeReference _typeRef_36 = this._typeReferenceBuilder.typeRef(String.class);
+      final Procedure1<JvmOperation> _function_21 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmTypeReference _typeRef_3 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Map.class, _typeRef_1, _typeRef_2);
+          JvmFormalParameter _parameter_1 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "filteredItems", _typeRef_3);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("String filteredStatement = \"\";");
+              _builder.newLine();
+              {
+                EList<DatamartRole> _roles = definition.getRoles();
+                int _size = _roles.size();
+                boolean _greaterThan = (_size > 0);
+                if (_greaterThan) {
+                  _builder.append("if (user == null || ");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("user.getUserName().equals(\"");
+                  _builder.append(IUserAccessService.ADMINISTRATOR, "\t");
+                  _builder.append("\") ||");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("\t");
+                  _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t");
+                  _builder.append(".getUserAccessService().getRoles() == null) ");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("{");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("filteredStatement = statements.get(\"");
+                  _builder.append(IUserAccessService.ADMINISTRATOR, "\t");
+                  _builder.append("\");");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("}");
+                  _builder.newLine();
+                  _builder.append("else {");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("// find the role with the biggest statement of authorized items");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("String bestRole = null;");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("int bestSize = -1;");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("for(String role:");
+                  _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t");
+                  _builder.append(".getUserAccessService().getRoles()) {");
+                  _builder.newLineIfNotEmpty();
+                  _builder.append("\t\t");
+                  _builder.append("if (statements.containsKey(role)) {");
+                  _builder.newLine();
+                  _builder.append("\t\t\t");
+                  _builder.append("if (bestSize < statements.get(role).length()) {");
+                  _builder.newLine();
+                  _builder.append("\t\t\t\t");
+                  _builder.append("bestSize = statements.get(role).length();");
+                  _builder.newLine();
+                  _builder.append("\t\t\t\t");
+                  _builder.append("bestRole = role;");
+                  _builder.newLine();
+                  _builder.append("\t\t\t");
+                  _builder.append("}");
+                  _builder.newLine();
+                  _builder.append("\t\t");
+                  _builder.append("}");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("}");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("if (bestRole != null) {");
+                  _builder.newLine();
+                  _builder.append("\t\t");
+                  _builder.append("filteredStatement = statements.get(bestRole);");
+                  _builder.newLine();
+                  _builder.append("\t");
+                  _builder.append("}");
+                  _builder.newLine();
+                  _builder.append("}");
+                  _builder.newLine();
+                } else {
+                  _builder.append("filteredStatement = statements.get(\"");
+                  _builder.append(IUserAccessService.ADMINISTRATOR, "");
+                  _builder.append("\");");
+                  _builder.newLineIfNotEmpty();
+                }
+              }
+              _builder.append("for (String filterID : filteredItems.keySet()) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("String filterValue = filteredItems.get(filterID);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("if (filterID.endsWith(\".id$\")) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("if\t(!filteredStatement.toLowerCase().contains(\" where \")) {");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("if\t((\" \"+filterValue).toLowerCase().contains(\"where \")) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("filteredStatement += \" \"+filterValue;");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("else {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("filteredStatement += \" where \"+filterValue;");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("else {");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("if\t(filterValue.trim().toLowerCase().startsWith(\"and \") ||");
+              _builder.newLine();
+              _builder.append("\t\t\t\t ");
+              _builder.append("filterValue.trim().toLowerCase().startsWith(\"or \") ) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("filteredStatement += filterValue;");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("else {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("filteredStatement += \" and \"+filterValue;");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("else {");
+              _builder.newLine();
+              _builder.append("\t   \t");
+              _builder.append("filteredStatement = filteredStatement.replace(filterID, filterValue);");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("log.debug(\"");
+              String _name = definition.getName();
+              _builder.append(_name, "");
+              _builder.append(":\"+filteredStatement);");
+              _builder.newLineIfNotEmpty();
+              _builder.append("return filteredStatement;");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_21 = this._jvmTypesBuilder.toMethod(definition, "setFilters", _typeRef_36, _function_21);
+      operation = _method_21;
+      EList<JvmMember> _members_21 = type.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_21, operation);
+      EList<JvmMember> _members_22 = type.getMembers();
+      JvmTypeReference _typeRef_37 = this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+      final Procedure1<JvmOperation> _function_22 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IUser.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "user", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmTypeReference _typeRef_2 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
+          JvmTypeReference _typeRef_3 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Map.class, _typeRef_1, _typeRef_2);
+          JvmFormalParameter _parameter_1 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "filteredItems", _typeRef_3);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+          JvmTypeReference _typeRef_4 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Class.class);
+          JvmFormalParameter _parameter_2 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "operativeDtoClass", _typeRef_4);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+          EList<JvmFormalParameter> _parameters_3 = it.getParameters();
+          JvmTypeReference _typeRef_5 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IDto.class);
+          JvmTypeReference _typeRef_6 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(List.class, _typeRef_5);
+          JvmFormalParameter _parameter_3 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "operativeDtos", _typeRef_6);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("ResultSet rs = null;");
+              _builder.newLine();
+              _builder.append("SqlCellSet cellSet = null;");
+              _builder.newLine();
+              _builder.append("java.sql.ResultSetMetaData metaData = null;");
+              _builder.newLine();
+              _builder.append("// --- if filler text is enabled ---");
+              _builder.newLine();
+              _builder.append("if\t(fFillerTextEnabled) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("// --- try to generate filler text ---");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("rs = generateFillerTextResultSet();");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("// --- if no result set is generated by now ---");
+              _builder.newLine();
+              _builder.append("connect();");
+              _builder.newLine();
+              _builder.append("if (rs == null) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("if (connection != null) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("String query = setFilters(user, filteredItems);");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("if (query.length()>0) {");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("try {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("rs = connection.createStatement().executeQuery(query);");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("} catch (SQLException e) {");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("log.error(\"Query: \"+query);");
+              _builder.newLine();
+              _builder.append("\t\t\t\t");
+              _builder.append("log.error(e.getLocalizedMessage());");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("if (rs != null) {");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("try {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("cellSet = new SqlCellSet(rs, getAxisMap(), getIdMap(), datamartDtoMapper, operativeDtoClass, operativeDtos);");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("metaData = rs.getMetaData();");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("catch (java.sql.SQLException e) {");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("try {");
+              _builder.newLine();
+              _builder.append("\t\t\t");
+              _builder.append("log.error(\"Statement: \"+rs.getStatement().toString());");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("} catch (SQLException e1) {}");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("log.error(e.getLocalizedMessage());");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("disconnect();");
+              _builder.newLine();
+              _builder.append("\t");
+              _builder.append("return (new DerivedCellSet(cellSet,");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append("metaData,");
+              _builder.newLine();
+              _builder.append("\t\t");
+              _builder.append(DatamartDSLJvmModelInferrer.this.binderClassName, "\t\t");
+              _builder.append(".getDSLMetadataService(), user));");
+              _builder.newLineIfNotEmpty();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("disconnect();");
+              _builder.newLine();
+              _builder.append("return null;");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_22 = this._jvmTypesBuilder.toMethod(definition, "getResults", _typeRef_37, _function_22);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_22, _method_22);
+      EList<JvmMember> _members_23 = type.getMembers();
+      DatamartSource _source_5 = definition.getSource();
+      this.addFillerTextMethods(_members_23, definition, ((DatamartEntity) _source_5));
+      EList<JvmMember> _members_24 = type.getMembers();
+      JvmTypeReference _typeRef_38 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      final Procedure1<JvmOperation> _function_23 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IEntityIdModificationListenerView.class);
+          JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "listeningView", _typeRef);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmTypeReference _typeRef_1 = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
+          JvmFormalParameter _parameter_1 = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "cellSet", _typeRef_1);
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              _builder.append("super.addEntityIdsToModifyListener(listeningView, cellSet);");
+              _builder.newLine();
+              _builder.append("// @TODO: 1) check for listenenView != null");
+              _builder.newLine();
+              _builder.append("// @TODO: 2) extract all entity & id (= primary key)");
+              _builder.newLine();
+              _builder.append("// @TODO: 3) for each tuple call listenenView.addEntityIdToModifyListener(entityName, primaryKey);");
+              _builder.newLine();
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_23 = this._jvmTypesBuilder.toMethod(definition, "addEntityIdsToModifyListener", _typeRef_38, _function_23);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_24, _method_23);
+      StringConcatenation _builder_2 = new StringConcatenation();
+      _builder_2.append("Test");
+      String _name_2 = definition.getName();
+      _builder_2.append(_name_2, "");
+      JvmTypeReference _typeRef_39 = this._typeReferenceBuilder.typeRef(String.class);
+      final Procedure1<JvmOperation> _function_24 = new Procedure1<JvmOperation>() {
+        public void apply(final JvmOperation it) {
+          it.setStatic(true);
+          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+            public void apply(final ITreeAppendable it) {
+              StringConcatenation _builder = new StringConcatenation();
+              String _name = definition.getName();
+              _builder.append(_name, "");
+              _builder.append("Datamart ");
+              String _name_1 = definition.getName();
+              String _lowerCase = _name_1.toLowerCase();
+              _builder.append(_lowerCase, "");
+              _builder.append(" = new ");
+              String _name_2 = definition.getName();
+              _builder.append(_name_2, "");
+              _builder.append("Datamart();");
+              _builder.newLineIfNotEmpty();
+              _builder.append("HashMap<String,String> filteredItems = new HashMap<String,String>();");
+              _builder.newLine();
+              _builder.append("if (");
+              String _name_3 = definition.getName();
+              String _lowerCase_1 = _name_3.toLowerCase();
+              _builder.append(_lowerCase_1, "");
+              _builder.append(".getFiltersCount() > 0) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              String _name_4 = definition.getName();
+              String _lowerCase_2 = _name_4.toLowerCase();
+              _builder.append(_lowerCase_2, "\t");
+              _builder.append(".getFilters(null);");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              _builder.append("for (String filterID : ");
+              String _name_5 = definition.getName();
+              String _lowerCase_3 = _name_5.toLowerCase();
+              _builder.append(_lowerCase_3, "\t");
+              _builder.append(".filterItems.keySet()) {");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t\t");
+              _builder.append("filteredItems.put(filterID, ");
+              String _name_6 = definition.getName();
+              String _lowerCase_4 = _name_6.toLowerCase();
+              _builder.append(_lowerCase_4, "\t\t");
+              _builder.append(".filterItems.get(filterID).iterator().next().getSelectionValue());");
+              _builder.newLineIfNotEmpty();
+              _builder.append("\t");
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("}");
+              _builder.newLine();
+              _builder.append("DerivedCellSet cellset = ");
+              String _name_7 = definition.getName();
+              String _lowerCase_5 = _name_7.toLowerCase();
+              _builder.append(_lowerCase_5, "");
+              _builder.append(".getResults(new User(\"");
+              _builder.append(IUserAccessService.ADMINISTRATOR, "");
+              _builder.append("\"), filteredItems, null, null);");
+              _builder.newLineIfNotEmpty();
+              _builder.append("org.junit.Assert.assertNotNull(cellset);");
+              _builder.newLine();
+              String _name_8 = definition.getName();
+              String _lowerCase_6 = _name_8.toLowerCase();
+              _builder.append(_lowerCase_6, "");
+              _builder.append(".disconnect();");
+              it.append(_builder);
+            }
+          };
+          DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+        }
+      };
+      JvmOperation _method_24 = this._jvmTypesBuilder.toMethod(definition, _builder_2.toString(), _typeRef_39, _function_24);
+      operation = _method_24;
+      JvmTypeReference _typeRef_40 = this._typeReferenceBuilder.typeRef(Void.TYPE);
+      operation.setReturnType(_typeRef_40);
+      JvmAnnotationReference annRef_2 = this._annotationTypesBuilder.annotationRef(Test.class);
+      EList<JvmAnnotationReference> _annotations_2 = operation.getAnnotations();
+      _annotations_2.add(annRef_2);
+      EList<JvmMember> _members_25 = type.getMembers();
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_25, operation);
+    }
+  }
+  
+  public int getGetNumAxes(final DatamartDefinition definition) {
+    int numAxes = 0;
+    DatamartSource _source = definition.getSource();
+    if ((_source instanceof DatamartCube)) {
+      DatamartSource _source_1 = definition.getSource();
+      EList<DatamartCubeElement> _axisslicer = ((DatamartCube) _source_1).getAxisslicer();
+      for (final DatamartCubeElement axisslicer : _axisslicer) {
+        if ((axisslicer instanceof DatamartAxis)) {
+          numAxes = (numAxes + 1);
+        }
+      }
+    } else {
+      DatamartSource _source_2 = definition.getSource();
+      if ((_source_2 instanceof DatamartTask)) {
+        numAxes = 2;
+      } else {
+        DatamartSource _source_3 = definition.getSource();
+        if ((_source_3 instanceof DatamartEntity)) {
+          DatamartSource _source_4 = definition.getSource();
+          int _entityNumAxes = this.getEntityNumAxes(((DatamartEntity) _source_4), 0);
+          numAxes = _entityNumAxes;
+        }
+      }
+    }
+    return numAxes;
+  }
+  
+  public int getEntityNumAxes(final DatamartEntity entity, final int num) {
+    int numAxes = num;
+    EList<DatamartProperty> _properties = entity.getProperties();
+    for (final DatamartProperty property : _properties) {
+      AxisEnum _axis = property.getAxis();
+      int _value = _axis.getValue();
+      int _plus = (_value + 1);
+      boolean _greaterThan = (_plus > num);
+      if (_greaterThan) {
+        AxisEnum _axis_1 = property.getAxis();
+        int _value_1 = _axis_1.getValue();
+        int _plus_1 = (_value_1 + 1);
+        numAxes = _plus_1;
+      }
+    }
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      DatamartEntity _datamartEntity = navigation.getDatamartEntity();
+      int _entityNumAxes = this.getEntityNumAxes(_datamartEntity, numAxes);
+      numAxes = _entityNumAxes;
+    }
+    return numAxes;
+  }
+  
+  public boolean addFillerTextMethods(final EList<JvmMember> list, final DatamartDefinition definition, final DatamartEntity entity) {
+    boolean _xifexpression = false;
+    boolean _and = false;
+    boolean _and_1 = false;
+    int _fillerMinCountRows = entity.getFillerMinCountRows();
+    boolean _greaterThan = (_fillerMinCountRows > 0);
+    if (!_greaterThan) {
+      _and_1 = false;
+    } else {
+      int _fillerMaxCountRows = entity.getFillerMaxCountRows();
+      boolean _greaterThan_1 = (_fillerMaxCountRows > 0);
+      _and_1 = _greaterThan_1;
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      EList<PropertyFillerData> _fillerDatas = entity.getFillerDatas();
+      boolean _isEmpty = _fillerDatas.isEmpty();
+      boolean _not = (!_isEmpty);
+      _and = _not;
+    }
+    if (_and) {
+      boolean _xblockexpression = false;
+      {
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(FillerTextResultSet.class);
+        final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("FillerTextResultSet rs = new FillerTextResultSet(this, ");
+                int _fillerMinCountRows = entity.getFillerMinCountRows();
+                _builder.append(_fillerMinCountRows, "");
+                _builder.append(", ");
+                int _fillerMaxCountRows = entity.getFillerMaxCountRows();
+                _builder.append(_fillerMaxCountRows, "");
+                _builder.append(");");
+                _builder.newLineIfNotEmpty();
+                it.append(_builder);
+                EList<PropertyFillerData> _fillerDatas = entity.getFillerDatas();
+                for (final PropertyFillerData data : _fillerDatas) {
+                  {
+                    String className = "String.class";
+                    String typeName = "java.sql.Types.CHAR";
+                    PropertyFillerType type = data.getFillerType();
+                    boolean _matched = false;
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerDateType) {
+                        _matched=true;
+                        className = "Timestamp.class";
+                        typeName = "java.sql.Types.TIMESTAMP";
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerDoubleType) {
+                        _matched=true;
+                        className = "BigDecimal.class";
+                        typeName = "java.sql.Types.DECIMAL";
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerIntegerType) {
+                        _matched=true;
+                        className = "BigDecimal.class";
+                        typeName = "java.sql.Types.DECIMAL";
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerTextType) {
+                        _matched=true;
+                      }
+                    }
+                    StringConcatenation _builder_1 = new StringConcatenation();
+                    _builder_1.append("rs.addColumn(\"");
+                    LEntityAttribute _propertyRef = data.getPropertyRef();
+                    String _name = _propertyRef.getName();
+                    _builder_1.append(_name, "");
+                    _builder_1.append("\", ");
+                    _builder_1.append(className, "");
+                    _builder_1.append(", null, ");
+                    _builder_1.append(typeName, "");
+                    _builder_1.append(");");
+                    _builder_1.newLineIfNotEmpty();
+                    it.append(_builder_1);
+                  }
+                }
+                StringConcatenation _builder_1 = new StringConcatenation();
+                _builder_1.append("return rs;");
+                it.append(_builder_1);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method = this._jvmTypesBuilder.toMethod(definition, "generateFillerTextResultSet", _typeRef, _function);
+        this._jvmTypesBuilder.<JvmOperation>operator_add(list, _method);
+        JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
+        JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Object.class);
+        JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Map.class, _typeRef_1, _typeRef_2);
+        final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
+          public void apply(final JvmOperation it) {
+            EList<JvmFormalParameter> _parameters = it.getParameters();
+            JvmTypeReference _typeRef = DatamartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(FillerTextProvider.class);
+            JvmFormalParameter _parameter = DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(definition, "provider", _typeRef);
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+            final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
+              public void apply(final ITreeAppendable it) {
+                StringConcatenation _builder = new StringConcatenation();
+                _builder.append("Map<String,Object> rowData = new HashMap<>();");
+                _builder.newLine();
+                it.append(_builder);
+                EList<PropertyFillerData> _fillerDatas = entity.getFillerDatas();
+                for (final PropertyFillerData data : _fillerDatas) {
+                  {
+                    String fillerTextMethod = "TO_BE_IMPLEMENTED";
+                    PropertyFillerType type = data.getFillerType();
+                    boolean _matched = false;
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerDateFuture) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        _builder_1.append("new Timestamp(provider.date(0,");
+                        int _dateFutureYears = ((PropertyFillerDateFuture)type).getDateFutureYears();
+                        _builder_1.append(_dateFutureYears, "");
+                        _builder_1.append(").getTime())");
+                        fillerTextMethod = _builder_1.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerDatePast) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        _builder_1.append("new Timestamp(provider.date(-");
+                        int _datePastYears = ((PropertyFillerDatePast)type).getDatePastYears();
+                        _builder_1.append(_datePastYears, "");
+                        _builder_1.append(",0).getTime())");
+                        fillerTextMethod = _builder_1.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerDateRange) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        _builder_1.append("new Timestamp(provider.date(");
+                        int _dateBeginYears = ((PropertyFillerDateRange)type).getDateBeginYears();
+                        _builder_1.append(_dateBeginYears, "");
+                        _builder_1.append(",");
+                        int _dateEndYears = ((PropertyFillerDateRange)type).getDateEndYears();
+                        _builder_1.append(_dateEndYears, "");
+                        _builder_1.append(").getTime())");
+                        fillerTextMethod = _builder_1.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerSignedDoubleRange) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        double _beginRange = ((PropertyFillerSignedDoubleRange)type).getBeginRange();
+                        _builder_1.append(_beginRange, "");
+                        String beginRange = _builder_1.toString();
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        double _endRange = ((PropertyFillerSignedDoubleRange)type).getEndRange();
+                        _builder_2.append(_endRange, "");
+                        String endRange = _builder_2.toString();
+                        LEntityAttribute _beginRangeRef = ((PropertyFillerSignedDoubleRange)type).getBeginRangeRef();
+                        boolean _notEquals = (!Objects.equal(_beginRangeRef, null));
+                        if (_notEquals) {
+                          StringConcatenation _builder_3 = new StringConcatenation();
+                          _builder_3.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _beginRangeRef_1 = ((PropertyFillerSignedDoubleRange)type).getBeginRangeRef();
+                          String _name = _beginRangeRef_1.getName();
+                          _builder_3.append(_name, "");
+                          _builder_3.append("\")).doubleValue()");
+                          beginRange = _builder_3.toString();
+                        }
+                        LEntityAttribute _endRangeRef = ((PropertyFillerSignedDoubleRange)type).getEndRangeRef();
+                        boolean _notEquals_1 = (!Objects.equal(_endRangeRef, null));
+                        if (_notEquals_1) {
+                          StringConcatenation _builder_4 = new StringConcatenation();
+                          _builder_4.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _endRangeRef_1 = ((PropertyFillerSignedDoubleRange)type).getEndRangeRef();
+                          String _name_1 = _endRangeRef_1.getName();
+                          _builder_4.append(_name_1, "");
+                          _builder_4.append("\")).doubleValue()");
+                          endRange = _builder_4.toString();
+                        }
+                        StringConcatenation _builder_5 = new StringConcatenation();
+                        _builder_5.append("new BigDecimal(provider.signeddouble(");
+                        int _decimals = ((PropertyFillerSignedDoubleRange)type).getDecimals();
+                        _builder_5.append(_decimals, "");
+                        _builder_5.append(",");
+                        _builder_5.append(beginRange, "");
+                        _builder_5.append(",");
+                        _builder_5.append(endRange, "");
+                        _builder_5.append(",");
+                        double _rounded = ((PropertyFillerSignedDoubleRange)type).getRounded();
+                        _builder_5.append(_rounded, "");
+                        _builder_5.append("))");
+                        fillerTextMethod = _builder_5.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerSignedDoubleRandom) {
+                        _matched=true;
+                        List<String> items = new ArrayList<String>();
+                        EList<Double> _items = ((PropertyFillerSignedDoubleRandom)type).getItems();
+                        for (final Double item : _items) {
+                          StringConcatenation _builder_1 = new StringConcatenation();
+                          _builder_1.append(item, "");
+                          items.add(_builder_1.toString());
+                        }
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        _builder_2.append("double[] ");
+                        LEntityAttribute _propertyRef = data.getPropertyRef();
+                        String _name = _propertyRef.getName();
+                        _builder_2.append(_name, "");
+                        _builder_2.append("_items = {");
+                        String _join = StringUtils.join(items, ",");
+                        _builder_2.append(_join, "");
+                        _builder_2.append("};");
+                        _builder_2.newLineIfNotEmpty();
+                        it.append(_builder_2);
+                        StringConcatenation _builder_3 = new StringConcatenation();
+                        _builder_3.append("new BigDecimal(");
+                        LEntityAttribute _propertyRef_1 = data.getPropertyRef();
+                        String _name_1 = _propertyRef_1.getName();
+                        _builder_3.append(_name_1, "");
+                        _builder_3.append("_items[provider.unsignedinteger(");
+                        EList<Double> _items_1 = ((PropertyFillerSignedDoubleRandom)type).getItems();
+                        int _size = _items_1.size();
+                        int _minus = (_size - 1);
+                        _builder_3.append(_minus, "");
+                        _builder_3.append(")])");
+                        fillerTextMethod = _builder_3.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerSignedIntegerRange) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        int _beginRange = ((PropertyFillerSignedIntegerRange)type).getBeginRange();
+                        _builder_1.append(_beginRange, "");
+                        String beginRange = _builder_1.toString();
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        int _endRange = ((PropertyFillerSignedIntegerRange)type).getEndRange();
+                        _builder_2.append(_endRange, "");
+                        String endRange = _builder_2.toString();
+                        LEntityAttribute _beginRangeRef = ((PropertyFillerSignedIntegerRange)type).getBeginRangeRef();
+                        boolean _notEquals = (!Objects.equal(_beginRangeRef, null));
+                        if (_notEquals) {
+                          StringConcatenation _builder_3 = new StringConcatenation();
+                          _builder_3.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _beginRangeRef_1 = ((PropertyFillerSignedIntegerRange)type).getBeginRangeRef();
+                          String _name = _beginRangeRef_1.getName();
+                          _builder_3.append(_name, "");
+                          _builder_3.append("\")).intValue()");
+                          beginRange = _builder_3.toString();
+                        }
+                        LEntityAttribute _endRangeRef = ((PropertyFillerSignedIntegerRange)type).getEndRangeRef();
+                        boolean _notEquals_1 = (!Objects.equal(_endRangeRef, null));
+                        if (_notEquals_1) {
+                          StringConcatenation _builder_4 = new StringConcatenation();
+                          _builder_4.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _endRangeRef_1 = ((PropertyFillerSignedIntegerRange)type).getEndRangeRef();
+                          String _name_1 = _endRangeRef_1.getName();
+                          _builder_4.append(_name_1, "");
+                          _builder_4.append("\")).intValue()");
+                          endRange = _builder_4.toString();
+                        }
+                        StringConcatenation _builder_5 = new StringConcatenation();
+                        _builder_5.append("new BigDecimal(provider.signedinteger(");
+                        _builder_5.append(beginRange, "");
+                        _builder_5.append(",");
+                        _builder_5.append(endRange, "");
+                        _builder_5.append(",");
+                        int _rounded = ((PropertyFillerSignedIntegerRange)type).getRounded();
+                        _builder_5.append(_rounded, "");
+                        _builder_5.append("))");
+                        fillerTextMethod = _builder_5.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerSignedIntegerRandom) {
+                        _matched=true;
+                        List<String> items = new ArrayList<String>();
+                        EList<Integer> _items = ((PropertyFillerSignedIntegerRandom)type).getItems();
+                        for (final Integer item : _items) {
+                          StringConcatenation _builder_1 = new StringConcatenation();
+                          _builder_1.append(item, "");
+                          items.add(_builder_1.toString());
+                        }
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        _builder_2.append("int[] ");
+                        LEntityAttribute _propertyRef = data.getPropertyRef();
+                        String _name = _propertyRef.getName();
+                        _builder_2.append(_name, "");
+                        _builder_2.append("_items = {");
+                        String _join = StringUtils.join(items, ",");
+                        _builder_2.append(_join, "");
+                        _builder_2.append("};");
+                        _builder_2.newLineIfNotEmpty();
+                        it.append(_builder_2);
+                        StringConcatenation _builder_3 = new StringConcatenation();
+                        _builder_3.append("new BigDecimal(");
+                        LEntityAttribute _propertyRef_1 = data.getPropertyRef();
+                        String _name_1 = _propertyRef_1.getName();
+                        _builder_3.append(_name_1, "");
+                        _builder_3.append("_items[provider.unsignedinteger(");
+                        EList<Integer> _items_1 = ((PropertyFillerSignedIntegerRandom)type).getItems();
+                        int _size = _items_1.size();
+                        int _minus = (_size - 1);
+                        _builder_3.append(_minus, "");
+                        _builder_3.append(")])");
+                        fillerTextMethod = _builder_3.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerTextRandom) {
+                        _matched=true;
+                        List<String> items = new ArrayList<String>();
+                        EList<String> _items = ((PropertyFillerTextRandom)type).getItems();
+                        for (final String item : _items) {
+                          StringConcatenation _builder_1 = new StringConcatenation();
+                          _builder_1.append("\"");
+                          _builder_1.append(item, "");
+                          _builder_1.append("\"");
+                          items.add(_builder_1.toString());
+                        }
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        _builder_2.append("Object[] ");
+                        LEntityAttribute _propertyRef = data.getPropertyRef();
+                        String _name = _propertyRef.getName();
+                        _builder_2.append(_name, "");
+                        _builder_2.append("_items = {");
+                        String _join = StringUtils.join(items, ",");
+                        _builder_2.append(_join, "");
+                        _builder_2.append("};");
+                        _builder_2.newLineIfNotEmpty();
+                        it.append(_builder_2);
+                        StringConcatenation _builder_3 = new StringConcatenation();
+                        LEntityAttribute _propertyRef_1 = data.getPropertyRef();
+                        String _name_1 = _propertyRef_1.getName();
+                        _builder_3.append(_name_1, "");
+                        _builder_3.append("_items[provider.unsignedinteger(");
+                        EList<String> _items_1 = ((PropertyFillerTextRandom)type).getItems();
+                        int _size = _items_1.size();
+                        int _minus = (_size - 1);
+                        _builder_3.append(_minus, "");
+                        _builder_3.append(")]");
+                        fillerTextMethod = _builder_3.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerTextParagraphs) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        _builder_1.append("provider.paragraphs(");
+                        int _count = ((PropertyFillerTextParagraphs)type).getCount();
+                        _builder_1.append(_count, "");
+                        _builder_1.append(")");
+                        fillerTextMethod = _builder_1.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerTextSentences) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        _builder_1.append("provider.sentences(");
+                        int _count = ((PropertyFillerTextSentences)type).getCount();
+                        _builder_1.append(_count, "");
+                        _builder_1.append(")");
+                        fillerTextMethod = _builder_1.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerTextWords) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        _builder_1.append("provider.words(");
+                        int _count = ((PropertyFillerTextWords)type).getCount();
+                        _builder_1.append(_count, "");
+                        _builder_1.append(")");
+                        fillerTextMethod = _builder_1.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerUnsignedDoubleRange) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        double _beginRange = ((PropertyFillerUnsignedDoubleRange)type).getBeginRange();
+                        _builder_1.append(_beginRange, "");
+                        String beginRange = _builder_1.toString();
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        double _endRange = ((PropertyFillerUnsignedDoubleRange)type).getEndRange();
+                        _builder_2.append(_endRange, "");
+                        String endRange = _builder_2.toString();
+                        LEntityAttribute _beginRangeRef = ((PropertyFillerUnsignedDoubleRange)type).getBeginRangeRef();
+                        boolean _notEquals = (!Objects.equal(_beginRangeRef, null));
+                        if (_notEquals) {
+                          StringConcatenation _builder_3 = new StringConcatenation();
+                          _builder_3.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _beginRangeRef_1 = ((PropertyFillerUnsignedDoubleRange)type).getBeginRangeRef();
+                          String _name = _beginRangeRef_1.getName();
+                          _builder_3.append(_name, "");
+                          _builder_3.append("\")).doubleValue()");
+                          beginRange = _builder_3.toString();
+                        }
+                        LEntityAttribute _endRangeRef = ((PropertyFillerUnsignedDoubleRange)type).getEndRangeRef();
+                        boolean _notEquals_1 = (!Objects.equal(_endRangeRef, null));
+                        if (_notEquals_1) {
+                          StringConcatenation _builder_4 = new StringConcatenation();
+                          _builder_4.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _endRangeRef_1 = ((PropertyFillerUnsignedDoubleRange)type).getEndRangeRef();
+                          String _name_1 = _endRangeRef_1.getName();
+                          _builder_4.append(_name_1, "");
+                          _builder_4.append("\")).doubleValue()");
+                          endRange = _builder_4.toString();
+                        }
+                        StringConcatenation _builder_5 = new StringConcatenation();
+                        _builder_5.append("new BigDecimal(provider.unsigneddouble(");
+                        int _decimals = ((PropertyFillerUnsignedDoubleRange)type).getDecimals();
+                        _builder_5.append(_decimals, "");
+                        _builder_5.append(",");
+                        _builder_5.append(beginRange, "");
+                        _builder_5.append(",");
+                        _builder_5.append(endRange, "");
+                        _builder_5.append(",");
+                        double _rounded = ((PropertyFillerUnsignedDoubleRange)type).getRounded();
+                        _builder_5.append(_rounded, "");
+                        _builder_5.append("))");
+                        fillerTextMethod = _builder_5.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerUnsignedDoubleRandom) {
+                        _matched=true;
+                        List<String> items = new ArrayList<String>();
+                        EList<Double> _items = ((PropertyFillerUnsignedDoubleRandom)type).getItems();
+                        for (final Double item : _items) {
+                          StringConcatenation _builder_1 = new StringConcatenation();
+                          _builder_1.append(item, "");
+                          items.add(_builder_1.toString());
+                        }
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        _builder_2.append("double[] ");
+                        LEntityAttribute _propertyRef = data.getPropertyRef();
+                        String _name = _propertyRef.getName();
+                        _builder_2.append(_name, "");
+                        _builder_2.append("_items = {");
+                        String _join = StringUtils.join(items, ",");
+                        _builder_2.append(_join, "");
+                        _builder_2.append("};");
+                        _builder_2.newLineIfNotEmpty();
+                        it.append(_builder_2);
+                        StringConcatenation _builder_3 = new StringConcatenation();
+                        _builder_3.append("new BigDecimal(");
+                        LEntityAttribute _propertyRef_1 = data.getPropertyRef();
+                        String _name_1 = _propertyRef_1.getName();
+                        _builder_3.append(_name_1, "");
+                        _builder_3.append("_items[provider.unsignedinteger(");
+                        EList<Double> _items_1 = ((PropertyFillerUnsignedDoubleRandom)type).getItems();
+                        int _size = _items_1.size();
+                        int _minus = (_size - 1);
+                        _builder_3.append(_minus, "");
+                        _builder_3.append(")])");
+                        fillerTextMethod = _builder_3.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerUnsignedIntegerRange) {
+                        _matched=true;
+                        StringConcatenation _builder_1 = new StringConcatenation();
+                        int _beginRange = ((PropertyFillerUnsignedIntegerRange)type).getBeginRange();
+                        _builder_1.append(_beginRange, "");
+                        String beginRange = _builder_1.toString();
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        int _endRange = ((PropertyFillerUnsignedIntegerRange)type).getEndRange();
+                        _builder_2.append(_endRange, "");
+                        String endRange = _builder_2.toString();
+                        LEntityAttribute _beginRangeRef = ((PropertyFillerUnsignedIntegerRange)type).getBeginRangeRef();
+                        boolean _notEquals = (!Objects.equal(_beginRangeRef, null));
+                        if (_notEquals) {
+                          StringConcatenation _builder_3 = new StringConcatenation();
+                          _builder_3.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _beginRangeRef_1 = ((PropertyFillerUnsignedIntegerRange)type).getBeginRangeRef();
+                          String _name = _beginRangeRef_1.getName();
+                          _builder_3.append(_name, "");
+                          _builder_3.append("\")).intValue()");
+                          beginRange = _builder_3.toString();
+                        }
+                        LEntityAttribute _endRangeRef = ((PropertyFillerUnsignedIntegerRange)type).getEndRangeRef();
+                        boolean _notEquals_1 = (!Objects.equal(_endRangeRef, null));
+                        if (_notEquals_1) {
+                          StringConcatenation _builder_4 = new StringConcatenation();
+                          _builder_4.append("((BigDecimal)rowData.get(\"");
+                          LEntityAttribute _endRangeRef_1 = ((PropertyFillerUnsignedIntegerRange)type).getEndRangeRef();
+                          String _name_1 = _endRangeRef_1.getName();
+                          _builder_4.append(_name_1, "");
+                          _builder_4.append("\")).intValue()");
+                          endRange = _builder_4.toString();
+                        }
+                        StringConcatenation _builder_5 = new StringConcatenation();
+                        _builder_5.append("new BigDecimal(provider.unsignedinteger(");
+                        _builder_5.append(beginRange, "");
+                        _builder_5.append(",");
+                        _builder_5.append(endRange, "");
+                        _builder_5.append(",");
+                        int _rounded = ((PropertyFillerUnsignedIntegerRange)type).getRounded();
+                        _builder_5.append(_rounded, "");
+                        _builder_5.append("))");
+                        fillerTextMethod = _builder_5.toString();
+                      }
+                    }
+                    if (!_matched) {
+                      if (type instanceof PropertyFillerUnsignedIntegerRandom) {
+                        _matched=true;
+                        List<String> items = new ArrayList<String>();
+                        EList<Integer> _items = ((PropertyFillerUnsignedIntegerRandom)type).getItems();
+                        for (final Integer item : _items) {
+                          StringConcatenation _builder_1 = new StringConcatenation();
+                          _builder_1.append(item, "");
+                          items.add(_builder_1.toString());
+                        }
+                        StringConcatenation _builder_2 = new StringConcatenation();
+                        _builder_2.append("int[] ");
+                        LEntityAttribute _propertyRef = data.getPropertyRef();
+                        String _name = _propertyRef.getName();
+                        _builder_2.append(_name, "");
+                        _builder_2.append("_items = {");
+                        String _join = StringUtils.join(items, ",");
+                        _builder_2.append(_join, "");
+                        _builder_2.append("};");
+                        _builder_2.newLineIfNotEmpty();
+                        it.append(_builder_2);
+                        StringConcatenation _builder_3 = new StringConcatenation();
+                        _builder_3.append("new BigDecimal(");
+                        LEntityAttribute _propertyRef_1 = data.getPropertyRef();
+                        String _name_1 = _propertyRef_1.getName();
+                        _builder_3.append(_name_1, "");
+                        _builder_3.append("_items[provider.unsignedinteger(");
+                        EList<Integer> _items_1 = ((PropertyFillerUnsignedIntegerRandom)type).getItems();
+                        int _size = _items_1.size();
+                        int _minus = (_size - 1);
+                        _builder_3.append(_minus, "");
+                        _builder_3.append(")])");
+                        fillerTextMethod = _builder_3.toString();
+                      }
+                    }
+                    StringConcatenation _builder_1 = new StringConcatenation();
+                    _builder_1.append("rowData.put(\"");
+                    LEntityAttribute _propertyRef = data.getPropertyRef();
+                    String _name = _propertyRef.getName();
+                    _builder_1.append(_name, "");
+                    _builder_1.append("\", ");
+                    _builder_1.append(fillerTextMethod, "");
+                    _builder_1.append(");");
+                    _builder_1.newLineIfNotEmpty();
+                    it.append(_builder_1);
+                  }
+                }
+                StringConcatenation _builder_1 = new StringConcatenation();
+                _builder_1.append("return rowData;");
+                it.append(_builder_1);
+              }
+            };
+            DatamartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
+          }
+        };
+        JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(definition, "generateFillerTextRow", _typeRef_3, _function_1);
+        _xblockexpression = this._jvmTypesBuilder.<JvmOperation>operator_add(list, _method_1);
+      }
+      _xifexpression = _xblockexpression;
+    }
+    return _xifexpression;
+  }
+  
+  /**
+   * <p>build the id map as lookup for primary key oriented applications.</p>
+   */
+  public String createIdMap(final DatamartDefinition definition) {
+    String listTxt = "";
+    Set<String> _keySet = this.idMap.keySet();
+    for (final String idColumn : _keySet) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(listTxt, "");
+      _builder.newLineIfNotEmpty();
+      _builder.append("\t\t");
+      _builder.append("put(\"");
+      _builder.append(idColumn, "\t\t");
+      _builder.append("\", EType.");
+      LEntityAttribute _get = this.idMap.get(idColumn);
+      IDataMart.EType _basicType = this.dtType.getBasicType(_get);
+      _builder.append(_basicType, "\t\t");
+      _builder.append(");");
+      listTxt = _builder.toString();
+    }
+    StringConcatenation _builder_1 = new StringConcatenation();
+    _builder_1.append("{{");
+    _builder_1.newLine();
+    _builder_1.append("\t");
+    _builder_1.append(listTxt, "\t");
+    _builder_1.newLineIfNotEmpty();
+    _builder_1.append("}}");
+    listTxt = _builder_1.toString();
+    return listTxt;
+  }
+  
+  /**
+   * <p>build the types map as lookup for datatypes.</p>
+   */
+  public String createTypesMaps(final DatamartDefinition definition, final HashMap<String, LEntityAttribute> typesMap) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("put(\"");
+    _builder.append(IUserAccessService.ADMINISTRATOR, "");
+    _builder.append("\", new HashMap<String,EType>()");
+    String _createTypesMap = this.createTypesMap(definition, null, typesMap);
+    _builder.append(_createTypesMap, "");
+    _builder.append(");");
+    String listTxt = _builder.toString();
+    EList<DatamartRole> _roles = definition.getRoles();
+    for (final DatamartRole role : _roles) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(listTxt, "");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("put(\"");
+      Role _assignedRole = role.getAssignedRole();
+      String _name = _assignedRole.getName();
+      _builder_1.append(_name, "");
+      _builder_1.append("\", new HashMap<String,EType>()");
+      String _createTypesMap_1 = this.createTypesMap(definition, role, typesMap);
+      _builder_1.append(_createTypesMap_1, "");
+      _builder_1.append(");");
+      listTxt = _builder_1.toString();
+    }
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append("{{");
+    _builder_2.newLine();
+    _builder_2.append("\t");
+    _builder_2.append(listTxt, "\t");
+    _builder_2.newLineIfNotEmpty();
+    _builder_2.append("}}");
+    listTxt = _builder_2.toString();
+    return listTxt;
+  }
+  
+  /**
+   * <p>build the types map as lookup for datatypes according to authorization roles.</p>
+   */
+  public String createTypesMap(final DatamartDefinition definition, final DatamartRole role, final HashMap<String, LEntityAttribute> typesMap) {
+    String listTxt = "";
+    boolean _equals = Objects.equal(role, null);
+    if (_equals) {
+      Set<String> _keySet = typesMap.keySet();
+      for (final String property : _keySet) {
+        {
+          LEntityAttribute _get = typesMap.get(property);
+          final IDataMart.EType type = this.dtType.getBasicType(_get);
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(listTxt, "");
+          _builder.newLineIfNotEmpty();
+          _builder.append("put(\"");
+          _builder.append(property, "");
+          _builder.append("\", EType.");
+          String _string = type.toString();
+          _builder.append(_string, "");
+          _builder.append(");");
+          listTxt = _builder.toString();
+        }
+      }
+    } else {
+      Set<String> _keySet_1 = typesMap.keySet();
+      for (final String property_1 : _keySet_1) {
+        boolean _isAuthorized = this.isAuthorized(role, property_1);
+        if (_isAuthorized) {
+          LEntityAttribute _get = typesMap.get(property_1);
+          final IDataMart.EType type = this.dtType.getBasicType(_get);
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(listTxt, "");
+          _builder.newLineIfNotEmpty();
+          _builder.append("put(\"");
+          _builder.append(property_1, "");
+          _builder.append("\", EType.");
+          String _string = type.toString();
+          _builder.append(_string, "");
+          _builder.append(");");
+          listTxt = _builder.toString();
+        }
+      }
+    }
+    StringConcatenation _builder_1 = new StringConcatenation();
+    _builder_1.append("{{");
+    _builder_1.newLine();
+    _builder_1.append("\t");
+    _builder_1.append(listTxt, "\t");
+    _builder_1.newLineIfNotEmpty();
+    _builder_1.append("}}");
+    listTxt = _builder_1.toString();
+    return listTxt;
+  }
+  
+  /**
+   * <p>build the axis map.</p>
+   */
+  public String createAxisMap(final DatamartDefinition definition) {
+    String text = "";
+    HashMap<Integer, List<String>> map = CollectionLiterals.<Integer, List<String>>newHashMap();
+    DatamartSource _source = definition.getSource();
+    boolean _notEquals = (!Objects.equal(_source, null));
+    if (_notEquals) {
+      DatamartSource _source_1 = definition.getSource();
+      if ((_source_1 instanceof DatamartEntity)) {
+        DatamartSource _source_2 = definition.getSource();
+        this.createAxisMap(((DatamartEntity) _source_2), map);
+      }
+      DatamartSource _source_3 = definition.getSource();
+      if ((_source_3 instanceof DatamartTask)) {
+        DatamartSource _source_4 = definition.getSource();
+        this.createAxisMap(((DatamartTask) _source_4), map);
+      }
+    }
+    Set<Integer> _keySet = map.keySet();
+    for (final Integer axisNumber : _keySet) {
+      {
+        String listTxt = "";
+        List<String> _get = map.get(axisNumber);
+        for (final String columnName : _get) {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(listTxt, "");
+          _builder.newLineIfNotEmpty();
+          _builder.append("\t\t");
+          _builder.append("add(\"");
+          _builder.append(columnName, "\t\t");
+          _builder.append("\");");
+          listTxt = _builder.toString();
+        }
+        boolean _and = false;
+        DatamartSource _source_5 = definition.getSource();
+        if (!(_source_5 instanceof DatamartEntity)) {
+          _and = false;
+        } else {
+          _and = ((axisNumber).intValue() == AxisEnum.COLUMNS_VALUE);
+        }
+        if (_and) {
+          if ((!this.ignoreEntityGrouping)) {
+            Collection<LEntity> _values = this.entityGrouping.values();
+            for (final LEntity entityRef : _values) {
+              {
+                String idColumn = DatamartDefinitionUtil.getEntityIdAliasName(entityRef);
+                boolean _notEquals_1 = (!Objects.equal(idColumn, null));
+                if (_notEquals_1) {
+                  StringConcatenation _builder_1 = new StringConcatenation();
+                  _builder_1.append(listTxt, "");
+                  _builder_1.newLineIfNotEmpty();
+                  _builder_1.append("\t\t");
+                  _builder_1.append("add(\"");
+                  _builder_1.append(idColumn, "\t\t");
+                  _builder_1.append("\");");
+                  listTxt = _builder_1.toString();
+                }
+              }
+            }
+          }
+        }
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("{{");
+        _builder_1.newLine();
+        _builder_1.append("\t");
+        _builder_1.append(listTxt, "\t");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("}}");
+        listTxt = _builder_1.toString();
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append(text, "");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("\t");
+        _builder_2.append("put(");
+        _builder_2.append(axisNumber, "\t");
+        _builder_2.append(",new ArrayList<String>() ");
+        _builder_2.append(listTxt, "\t");
+        _builder_2.append(");");
+        text = _builder_2.toString();
+      }
+    }
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("{{");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append(text, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.append("}}");
+    text = _builder.toString();
+    return text;
+  }
+  
+  /**
+   * <p>creates an axis map for tasks.</p>
+   */
+  public void createAxisMap(final DatamartTask task, final HashMap<Integer, List<String>> map) {
+    EList<DatamartColumn> _columns = task.getColumns();
+    for (final DatamartColumn column : _columns) {
+      {
+        int axisNumber = 0;
+        TaskQueryColumnEnum _columnRef = column.getColumnRef();
+        String name = _columnRef.getLiteral();
+        boolean found = false;
+        Set<Integer> _keySet = map.keySet();
+        for (final Integer axNum : _keySet) {
+          if (((axNum).intValue() == axisNumber)) {
+            List<String> _get = map.get(axNum);
+            _get.add(name);
+            found = true;
+          }
+        }
+        if ((!found)) {
+          ArrayList<String> columns = CollectionLiterals.<String>newArrayList();
+          columns.add(name);
+          map.put(Integer.valueOf(axisNumber), columns);
+        }
+      }
+    }
+  }
+  
+  public void recursAxisMap(final LScalarType type, final DatamartProperty property, final HashMap<Integer, List<String>> map, final int axisNumber) {
+    if ((type instanceof LBean)) {
+      LBean bean = ((LBean) type);
+      List<LBeanAttribute> _allAttributes = bean.getAllAttributes();
+      for (final LBeanAttribute attr : _allAttributes) {
+        LScalarType _type = attr.getType();
+        if ((_type instanceof LBean)) {
+          LScalarType _type_1 = attr.getType();
+          this.recursAxisMap(_type_1, property, map, axisNumber);
+        } else {
+          String _name = attr.getName();
+          this.addAxisProperty(_name, map, axisNumber);
+        }
+      }
+    } else {
+      LEntityAttribute _propertyRef = property.getPropertyRef();
+      String _name_1 = _propertyRef.getName();
+      this.addAxisProperty(_name_1, map, axisNumber);
+    }
+  }
+  
+  /**
+   * <p>recursively create an axis map for entities.</p>
+   */
+  public void createAxisMap(final DatamartEntity entity, final HashMap<Integer, List<String>> map) {
+    EList<DatamartProperty> _properties = entity.getProperties();
+    for (final DatamartProperty property : _properties) {
+      boolean _isPlaced = property.isPlaced();
+      if (_isPlaced) {
+        int axisNumber = (-1);
+        AxisEnum _axis = property.getAxis();
+        int _value = _axis.getValue();
+        boolean _equals = (_value == (-1));
+        if (_equals) {
+          axisNumber = 0;
+        } else {
+          AxisEnum _axis_1 = property.getAxis();
+          int _value_1 = _axis_1.getValue();
+          axisNumber = _value_1;
+        }
+        LEntityAttribute _propertyRef = property.getPropertyRef();
+        LScalarType _type = _propertyRef.getType();
+        LScalarType type = ((LScalarType) _type);
+        this.recursAxisMap(type, property, map, axisNumber);
+      }
+    }
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      DatamartEntity _datamartEntity = navigation.getDatamartEntity();
+      this.createAxisMap(_datamartEntity, map);
+    }
+  }
+  
+  public List<String> addAxisProperty(final String name, final HashMap<Integer, List<String>> map, final int axisNumber) {
+    List<String> _xblockexpression = null;
+    {
+      boolean found = false;
+      Set<Integer> _keySet = map.keySet();
+      for (final Integer axNum : _keySet) {
+        if (((axNum).intValue() == axisNumber)) {
+          List<String> _get = map.get(axNum);
+          String _string = name.toString();
+          _get.add(_string);
+          found = true;
+        }
+      }
+      List<String> _xifexpression = null;
+      if ((!found)) {
+        List<String> _xblockexpression_1 = null;
+        {
+          ArrayList<String> columns = CollectionLiterals.<String>newArrayList();
+          String _string_1 = name.toString();
+          columns.add(_string_1);
+          _xblockexpression_1 = map.put(Integer.valueOf(axisNumber), columns);
+        }
+        _xifexpression = _xblockexpression_1;
+      }
+      _xblockexpression = _xifexpression;
+    }
+    return _xblockexpression;
+  }
+  
+  public String getPropertyName(final DatamartProperty prop) {
+    StringConcatenation _builder = new StringConcatenation();
+    LEntityAttribute _propertyRef = prop.getPropertyRef();
+    String _name = _propertyRef.getName();
+    _builder.append(_name, "");
+    return _builder.toString();
+  }
+  
+  public LScalarType getPropertyType(final DatamartProperty prop) {
+    LEntityAttribute _propertyRef = prop.getPropertyRef();
+    return _propertyRef.getType();
+  }
+  
+  /**
+   * <p>build a map for the filters contained in a datamart depending on a cube.</p>
+   */
+  public String createFilterMap(final DatamartDefinition definition, final HashMap<String, String> filterIdMap) {
+    String text = "";
+    DatamartSource _source = definition.getSource();
+    boolean _notEquals = (!Objects.equal(_source, null));
+    if (_notEquals) {
+      DatamartSource _source_1 = definition.getSource();
+      if ((_source_1 instanceof DatamartCube)) {
+        DatamartSource _source_2 = definition.getSource();
+        DatamartCube cube = ((DatamartCube) _source_2);
+        EList<DatamartCubeElement> _axisslicer = cube.getAxisslicer();
+        for (final DatamartCubeElement axisslicer : _axisslicer) {
+          {
+            boolean _and = false;
+            if (!(axisslicer instanceof DatamartAxis)) {
+              _and = false;
+            } else {
+              EList<DatamartElement> _elements = ((DatamartAxis) axisslicer).getElements();
+              boolean _notEquals_1 = (!Objects.equal(_elements, null));
+              _and = _notEquals_1;
+            }
+            if (_and) {
+              EList<DatamartElement> _elements_1 = ((DatamartAxis) axisslicer).getElements();
+              for (final DatamartElement element : _elements_1) {
+                if ((element instanceof DatamartHierarchy)) {
+                  DatamartHierarchy hierarchy = ((DatamartHierarchy) element);
+                  boolean _isFiltered = hierarchy.isFiltered();
+                  if (_isFiltered) {
+                    StringConcatenation _builder = new StringConcatenation();
+                    _builder.append(text, "");
+                    _builder.newLineIfNotEmpty();
+                    _builder.append("put(\"");
+                    String _levelName = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                    String _decorate = IDataMart.decorate(IDataMart.singleSelectDecorator, _levelName);
+                    _builder.append(_decorate, "");
+                    _builder.append("\",\"");
+                    DatamartSource _source_3 = definition.getSource();
+                    String _createMDXFilter = this.createMDXFilter(((DatamartHierarchy) element), _source_3);
+                    _builder.append(_createMDXFilter, "");
+                    _builder.append("\");");
+                    text = _builder.toString();
+                    boolean _notEquals_2 = (!Objects.equal(filterIdMap, null));
+                    if (_notEquals_2) {
+                      StringConcatenation _builder_1 = new StringConcatenation();
+                      String _levelName_1 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                      String _decorate_1 = IDataMart.decorate(IDataMart.singleSelectDecorator, _levelName_1);
+                      _builder_1.append(_decorate_1, "");
+                      StringConcatenation _builder_2 = new StringConcatenation();
+                      EObject _eContainer = definition.eContainer();
+                      QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer));
+                      _builder_2.append(_fullyQualifiedName, "");
+                      _builder_2.append(".");
+                      String _name = definition.getName();
+                      _builder_2.append(_name, "");
+                      _builder_2.append(".");
+                      String _levelName_2 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false), 
+                        Boolean.valueOf(false));
+                      _builder_2.append(_levelName_2, "");
+                      String _string = _builder_2.toString();
+                      String _replace = _string.replace(".", "/");
+                      filterIdMap.put(_builder_1.toString(), _replace);
+                    }
+                  }
+                  boolean _isSelected = hierarchy.isSelected();
+                  if (_isSelected) {
+                    StringConcatenation _builder_3 = new StringConcatenation();
+                    _builder_3.append(text, "");
+                    _builder_3.newLineIfNotEmpty();
+                    _builder_3.append("put(\"");
+                    String _levelName_3 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                    String _decorate_2 = IDataMart.decorate(IDataMart.multiSelectDecorator, _levelName_3);
+                    _builder_3.append(_decorate_2, "");
+                    _builder_3.append("\",\"");
+                    DatamartSource _source_4 = definition.getSource();
+                    String _createMDXFilter_1 = this.createMDXFilter(((DatamartHierarchy) element), _source_4);
+                    _builder_3.append(_createMDXFilter_1, "");
+                    _builder_3.append("\");");
+                    text = _builder_3.toString();
+                    boolean _notEquals_3 = (!Objects.equal(filterIdMap, null));
+                    if (_notEquals_3) {
+                      StringConcatenation _builder_4 = new StringConcatenation();
+                      String _levelName_4 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                      String _decorate_3 = IDataMart.decorate(IDataMart.multiSelectDecorator, _levelName_4);
+                      _builder_4.append(_decorate_3, "");
+                      StringConcatenation _builder_5 = new StringConcatenation();
+                      EObject _eContainer_1 = definition.eContainer();
+                      QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer_1));
+                      _builder_5.append(_fullyQualifiedName_1, "");
+                      _builder_5.append(".");
+                      String _name_1 = definition.getName();
+                      _builder_5.append(_name_1, "");
+                      _builder_5.append(".");
+                      String _levelName_5 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false), 
+                        Boolean.valueOf(false));
+                      _builder_5.append(_levelName_5, "");
+                      String _string_1 = _builder_5.toString();
+                      String _replace_1 = _string_1.replace(".", "/");
+                      filterIdMap.put(_builder_4.toString(), _replace_1);
+                    }
+                  }
+                  boolean _isExcept = hierarchy.isExcept();
+                  if (_isExcept) {
+                    StringConcatenation _builder_6 = new StringConcatenation();
+                    _builder_6.append(text, "");
+                    _builder_6.newLineIfNotEmpty();
+                    _builder_6.append("put(\"");
+                    String _dimensionName = this.getDimensionName(hierarchy, Boolean.valueOf(true));
+                    String _plus = (_dimensionName + ".[");
+                    CubeLevel _exceptRef = hierarchy.getExceptRef();
+                    String _name_2 = _exceptRef.getName();
+                    String _plus_1 = (_plus + _name_2);
+                    String _plus_2 = (_plus_1 + "]");
+                    String _decorate_4 = IDataMart.decorate(IDataMart.exceptDecorator, _plus_2);
+                    _builder_6.append(_decorate_4, "");
+                    _builder_6.append("\",\"");
+                    DatamartSource _source_5 = definition.getSource();
+                    String _createMDXFilter_2 = this.createMDXFilter(hierarchy, _source_5);
+                    _builder_6.append(_createMDXFilter_2, "");
+                    _builder_6.append("\");");
+                    text = _builder_6.toString();
+                    boolean _notEquals_4 = (!Objects.equal(filterIdMap, null));
+                    if (_notEquals_4) {
+                      StringConcatenation _builder_7 = new StringConcatenation();
+                      String _levelName_6 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                      String _decorate_5 = IDataMart.decorate(IDataMart.exceptDecorator, _levelName_6);
+                      _builder_7.append(_decorate_5, "");
+                      StringConcatenation _builder_8 = new StringConcatenation();
+                      EObject _eContainer_2 = definition.eContainer();
+                      QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer_2));
+                      _builder_8.append(_fullyQualifiedName_2, "");
+                      _builder_8.append(".");
+                      String _name_3 = definition.getName();
+                      _builder_8.append(_name_3, "");
+                      _builder_8.append(".");
+                      String _levelName_7 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false), 
+                        Boolean.valueOf(false));
+                      _builder_8.append(_levelName_7, "");
+                      String _string_2 = _builder_8.toString();
+                      String _replace_2 = _string_2.replace(".", "/");
+                      filterIdMap.put(_builder_7.toString(), _replace_2);
+                    }
+                  }
+                }
+              }
+            }
+            boolean _and_1 = false;
+            if (!(axisslicer instanceof DatamartSlicer)) {
+              _and_1 = false;
+            } else {
+              DatamartElement _element = ((DatamartSlicer) axisslicer).getElement();
+              boolean _notEquals_5 = (!Objects.equal(_element, null));
+              _and_1 = _notEquals_5;
+            }
+            if (_and_1) {
+              DatamartElement element_1 = ((DatamartSlicer) axisslicer).getElement();
+              if ((element_1 instanceof DatamartHierarchy)) {
+                DatamartHierarchy hierarchy_1 = ((DatamartHierarchy) element_1);
+                boolean _isFiltered_1 = hierarchy_1.isFiltered();
+                if (_isFiltered_1) {
+                  StringConcatenation _builder_9 = new StringConcatenation();
+                  _builder_9.append(text, "");
+                  _builder_9.newLineIfNotEmpty();
+                  _builder_9.append("put(\"");
+                  String _levelName_8 = this.getLevelName(((DatamartHierarchy) element_1), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                  String _decorate_6 = IDataMart.decorate(IDataMart.slicerSingleSelectDecorator, _levelName_8);
+                  _builder_9.append(_decorate_6, "");
+                  _builder_9.append("\",\"");
+                  DatamartSource _source_6 = definition.getSource();
+                  String _createMDXFilter_3 = this.createMDXFilter(((DatamartHierarchy) element_1), _source_6);
+                  _builder_9.append(_createMDXFilter_3, "");
+                  _builder_9.append("\");");
+                  text = _builder_9.toString();
+                  boolean _notEquals_6 = (!Objects.equal(filterIdMap, null));
+                  if (_notEquals_6) {
+                    StringConcatenation _builder_10 = new StringConcatenation();
+                    String _levelName_9 = this.getLevelName(((DatamartHierarchy) element_1), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                    String _decorate_7 = IDataMart.decorate(IDataMart.slicerSingleSelectDecorator, _levelName_9);
+                    _builder_10.append(_decorate_7, "");
+                    StringConcatenation _builder_11 = new StringConcatenation();
+                    EObject _eContainer_3 = definition.eContainer();
+                    QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer_3));
+                    _builder_11.append(_fullyQualifiedName_3, "");
+                    _builder_11.append(".");
+                    String _name_4 = definition.getName();
+                    _builder_11.append(_name_4, "");
+                    _builder_11.append(".");
+                    String _levelName_10 = this.getLevelName(((DatamartHierarchy) element_1), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                    _builder_11.append(_levelName_10, "");
+                    String _string_3 = _builder_11.toString();
+                    String _replace_3 = _string_3.replace(".", "/");
+                    filterIdMap.put(_builder_10.toString(), _replace_3);
+                  }
+                }
+                boolean _isSelected_1 = hierarchy_1.isSelected();
+                if (_isSelected_1) {
+                  StringConcatenation _builder_12 = new StringConcatenation();
+                  _builder_12.append(text, "");
+                  _builder_12.newLineIfNotEmpty();
+                  _builder_12.append("put(\"");
+                  String _levelName_11 = this.getLevelName(((DatamartHierarchy) element_1), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                  String _decorate_8 = IDataMart.decorate(IDataMart.slicerMultiSelectDecorator, _levelName_11);
+                  _builder_12.append(_decorate_8, "");
+                  _builder_12.append("\",\"");
+                  DatamartSource _source_7 = definition.getSource();
+                  String _createMDXFilter_4 = this.createMDXFilter(((DatamartHierarchy) element_1), _source_7);
+                  _builder_12.append(_createMDXFilter_4, "");
+                  _builder_12.append("\");");
+                  text = _builder_12.toString();
+                  boolean _notEquals_7 = (!Objects.equal(filterIdMap, null));
+                  if (_notEquals_7) {
+                    StringConcatenation _builder_13 = new StringConcatenation();
+                    String _levelName_12 = this.getLevelName(((DatamartHierarchy) element_1), Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                    String _decorate_9 = IDataMart.decorate(IDataMart.slicerMultiSelectDecorator, _levelName_12);
+                    _builder_13.append(_decorate_9, "");
+                    StringConcatenation _builder_14 = new StringConcatenation();
+                    EObject _eContainer_4 = definition.eContainer();
+                    QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer_4));
+                    _builder_14.append(_fullyQualifiedName_4, "");
+                    _builder_14.append(".");
+                    String _name_5 = definition.getName();
+                    _builder_14.append(_name_5, "");
+                    _builder_14.append(".");
+                    String _levelName_13 = this.getLevelName(((DatamartHierarchy) element_1), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+                    _builder_14.append(_levelName_13, "");
+                    String _string_4 = _builder_14.toString();
+                    String _replace_4 = _string_4.replace(".", "/");
+                    filterIdMap.put(_builder_13.toString(), _replace_4);
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      DatamartSource _source_3 = definition.getSource();
+      if ((_source_3 instanceof DatamartEntity)) {
+        DatamartSource _source_4 = definition.getSource();
+        DatamartEntity entity = ((DatamartEntity) _source_4);
+        String _createFiltermapCondition = this.createFiltermapCondition(entity, definition, filterIdMap);
+        text = _createFiltermapCondition;
+      }
+      DatamartSource _source_5 = definition.getSource();
+      if ((_source_5 instanceof DatamartTask)) {
+        DatamartSource _source_6 = definition.getSource();
+        DatamartTask task = ((DatamartTask) _source_6);
+        String _createFiltermapCondition_1 = this.createFiltermapCondition(task, definition, filterIdMap);
+        text = _createFiltermapCondition_1;
+      }
+      int _length = text.length();
+      boolean _greaterThan = (_length > 0);
+      if (_greaterThan) {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("{{");
+        _builder.newLine();
+        _builder.append(text, "");
+        _builder.newLineIfNotEmpty();
+        _builder.append("}}");
+        text = _builder.toString();
+      }
+    }
+    return text;
+  }
+  
+  /**
+   * <p>build a map for the filters contained in a datamart depending on a task.</p>
+   */
+  public String createFiltermapCondition(final DatamartTask task, final DatamartDefinition definition, final HashMap<String, String> filterIdMap) {
+    String text = "";
+    EList<DatamartCondition> _conditions = task.getConditions();
+    for (final DatamartCondition condition : _conditions) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(text, "");
+      _builder.newLineIfNotEmpty();
+      String _createSQLFilter = this.createSQLFilter(condition, task, definition, filterIdMap);
+      _builder.append(_createSQLFilter, "");
+      text = _builder.toString();
+    }
+    return text;
+  }
+  
+  /**
+   * <p>build the sql filter condition depending on an entity.</p>
+   */
+  public String createSQLFilter(final DatamartCondition condition, final DatamartTask task, final DatamartDefinition definition, final HashMap<String, String> filterIdMap) {
+    String text = "";
+    Expression _condition = condition.getCondition();
+    boolean _notEquals = (!Objects.equal(_condition, null));
+    if (_notEquals) {
+      Expression _condition_1 = condition.getCondition();
+      if ((_condition_1 instanceof ConditionalExpression)) {
+        Expression _condition_2 = condition.getCondition();
+        Expression element = ((ConditionalExpression) _condition_2).getRight();
+        Expression _condition_3 = condition.getCondition();
+        Expression _left = ((ConditionalExpression) _condition_3).getLeft();
+        if ((_left instanceof DatamartTaskFilter)) {
+          Expression _condition_4 = condition.getCondition();
+          Expression _left_1 = ((ConditionalExpression) _condition_4).getLeft();
+          DatamartTaskFilter taskFilter = ((DatamartTaskFilter) _left_1);
+          boolean _or = false;
+          boolean _isFiltered = element.isFiltered();
+          if (_isFiltered) {
+            _or = true;
+          } else {
+            boolean _isSelected = element.isSelected();
+            _or = _isSelected;
+          }
+          if (_or) {
+            boolean _notEquals_1 = (!Objects.equal(filterIdMap, null));
+            if (_notEquals_1) {
+              StringConcatenation _builder = new StringConcatenation();
+              {
+                boolean _isFiltered_1 = element.isFiltered();
+                if (_isFiltered_1) {
+                  _builder.append(IDataMart.singleSelectDecorator, "");
+                } else {
+                  boolean _isSelected_1 = element.isSelected();
+                  if (_isSelected_1) {
+                    _builder.append(IDataMart.multiSelectDecorator, "");
+                  }
+                }
+              }
+              TaskFilterEnum _filterRef = taskFilter.getFilterRef();
+              String _literal = _filterRef.getLiteral();
+              _builder.append(_literal, "");
+              {
+                boolean _isFiltered_2 = element.isFiltered();
+                if (_isFiltered_2) {
+                  _builder.append(IDataMart.singleSelectDecorator, "");
+                } else {
+                  boolean _isSelected_2 = element.isSelected();
+                  if (_isSelected_2) {
+                    _builder.append(IDataMart.multiSelectDecorator, "");
+                  }
+                }
+              }
+              StringConcatenation _builder_1 = new StringConcatenation();
+              EObject _eContainer = definition.eContainer();
+              QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer));
+              _builder_1.append(_fullyQualifiedName, "");
+              _builder_1.append(".");
+              String _name = definition.getName();
+              _builder_1.append(_name, "");
+              _builder_1.append(".");
+              TaskFilterEnum _filterRef_1 = taskFilter.getFilterRef();
+              String _literal_1 = _filterRef_1.getLiteral();
+              _builder_1.append(_literal_1, "");
+              String _string = _builder_1.toString();
+              String _replace = _string.replace(".", "/");
+              filterIdMap.put(_builder.toString(), _replace);
+            }
+            StringConcatenation _builder_2 = new StringConcatenation();
+            TaskFilterEnum _filterRef_2 = taskFilter.getFilterRef();
+            String _literal_2 = _filterRef_2.getLiteral();
+            _builder_2.append(_literal_2, "");
+            String filter = _builder_2.toString();
+            StringConcatenation _builder_3 = new StringConcatenation();
+            _builder_3.append(text, "");
+            _builder_3.newLineIfNotEmpty();
+            _builder_3.append("put(\"");
+            {
+              boolean _isFiltered_3 = element.isFiltered();
+              if (_isFiltered_3) {
+                _builder_3.append(IDataMart.singleSelectDecorator, "");
+              } else {
+                boolean _isSelected_3 = element.isSelected();
+                if (_isSelected_3) {
+                  _builder_3.append(IDataMart.multiSelectDecorator, "");
+                }
+              }
+            }
+            TaskFilterEnum _filterRef_3 = taskFilter.getFilterRef();
+            String _literal_3 = _filterRef_3.getLiteral();
+            _builder_3.append(_literal_3, "");
+            {
+              boolean _isFiltered_4 = element.isFiltered();
+              if (_isFiltered_4) {
+                _builder_3.append(IDataMart.singleSelectDecorator, "");
+              } else {
+                boolean _isSelected_4 = element.isSelected();
+                if (_isSelected_4) {
+                  _builder_3.append(IDataMart.multiSelectDecorator, "");
+                }
+              }
+            }
+            _builder_3.append("\",\"");
+            _builder_3.append(filter, "");
+            _builder_3.append("\");");
+            text = _builder_3.toString();
+          }
+        } else {
+          Expression _condition_5 = condition.getCondition();
+          Expression _left_2 = ((ConditionalExpression) _condition_5).getLeft();
+          if ((_left_2 instanceof DatamartColumn)) {
+            Expression _condition_6 = condition.getCondition();
+            Expression _left_3 = ((ConditionalExpression) _condition_6).getLeft();
+            DatamartColumn taskColumn = ((DatamartColumn) _left_3);
+            boolean _isFiltered_5 = element.isFiltered();
+            if (_isFiltered_5) {
+              boolean _notEquals_2 = (!Objects.equal(filterIdMap, null));
+              if (_notEquals_2) {
+                StringConcatenation _builder_4 = new StringConcatenation();
+                {
+                  boolean _isFiltered_6 = element.isFiltered();
+                  if (_isFiltered_6) {
+                    _builder_4.append(IDataMart.singleSelectDecorator, "");
+                  } else {
+                    boolean _isSelected_5 = element.isSelected();
+                    if (_isSelected_5) {
+                      _builder_4.append(IDataMart.multiSelectDecorator, "");
+                    }
+                  }
+                }
+                TaskQueryColumnEnum _columnRef = taskColumn.getColumnRef();
+                String _name_1 = _columnRef.name();
+                _builder_4.append(_name_1, "");
+                _builder_4.append(".");
+                TaskQueryColumnEnum _columnRef_1 = taskColumn.getColumnRef();
+                String _name_2 = _columnRef_1.name();
+                _builder_4.append(_name_2, "");
+                {
+                  boolean _isFiltered_7 = element.isFiltered();
+                  if (_isFiltered_7) {
+                    _builder_4.append(IDataMart.singleSelectDecorator, "");
+                  } else {
+                    boolean _isSelected_6 = element.isSelected();
+                    if (_isSelected_6) {
+                      _builder_4.append(IDataMart.multiSelectDecorator, "");
+                    }
+                  }
+                }
+                StringConcatenation _builder_5 = new StringConcatenation();
+                EObject _eContainer_1 = definition.eContainer();
+                QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer_1));
+                _builder_5.append(_fullyQualifiedName_1, "");
+                _builder_5.append(".");
+                String _name_3 = definition.getName();
+                _builder_5.append(_name_3, "");
+                _builder_5.append(".");
+                TaskQueryColumnEnum _columnRef_2 = taskColumn.getColumnRef();
+                String _name_4 = _columnRef_2.name();
+                _builder_5.append(_name_4, "");
+                _builder_5.append(".");
+                TaskQueryColumnEnum _columnRef_3 = taskColumn.getColumnRef();
+                String _name_5 = _columnRef_3.name();
+                _builder_5.append(_name_5, "");
+                String _string_1 = _builder_5.toString();
+                String _replace_1 = _string_1.replace(".", "/");
+                filterIdMap.put(_builder_4.toString(), _replace_1);
+              }
+            }
+          }
+        }
+      }
+    }
+    return text;
+  }
+  
+  /**
+   * <p>build a map for the filters contained in a datamart depending on an entity.</p>
+   */
+  public String createFiltermapCondition(final DatamartEntity entity, final DatamartDefinition definition, final HashMap<String, String> filterIdMap) {
+    String text = "";
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(text, "");
+    _builder.newLineIfNotEmpty();
+    String _createDefaultSQLFilter = this.createDefaultSQLFilter(entity, filterIdMap);
+    _builder.append(_createDefaultSQLFilter, "");
+    text = _builder.toString();
+    EList<DatamartCondition> _conditions = entity.getConditions();
+    for (final DatamartCondition condition : _conditions) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(text, "");
+      _builder_1.newLineIfNotEmpty();
+      String _createSQLFilter = this.createSQLFilter(condition, entity, definition, filterIdMap);
+      _builder_1.append(_createSQLFilter, "");
+      text = _builder_1.toString();
+    }
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      {
+        if ((navigation instanceof DatamartMember)) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append(text, "");
+          _builder_2.newLineIfNotEmpty();
+          DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
+          String _createFiltermapCondition = this.createFiltermapCondition(_datamartEntity, definition, filterIdMap);
+          _builder_2.append(_createFiltermapCondition, "");
+          text = _builder_2.toString();
+        }
+        if ((navigation instanceof DatamartOwner)) {
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append(text, "");
+          _builder_3.newLineIfNotEmpty();
+          DatamartEntity _datamartEntity_1 = ((DatamartOwner) navigation).getDatamartEntity();
+          String _createFiltermapCondition_1 = this.createFiltermapCondition(_datamartEntity_1, definition, filterIdMap);
+          _builder_3.append(_createFiltermapCondition_1, "");
+          text = _builder_3.toString();
+        }
+      }
+    }
+    return text;
+  }
+  
+  /**
+   * <p>build the default sql filter on id depending on an entity.</p>
+   */
+  public String createDefaultSQLFilter(final DatamartEntity entity, final HashMap<String, String> filterIdMap) {
+    String text = "";
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append(IDataMart.filterIdPlaceholder, "");
+    String filter = _builder.toString();
+    boolean _notEquals = (!Objects.equal(filterIdMap, null));
+    if (_notEquals) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(IDataMart.singleSelectDecorator, "");
+      String _entityAlias = this.getEntityAlias(entity);
+      _builder_1.append(_entityAlias, "");
+      _builder_1.append(".id");
+      _builder_1.append(IDataMart.singleSelectDecorator, "");
+      filterIdMap.put(_builder_1.toString(), 
+        IDataMart.filterIdPlaceholder);
+    }
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append(text, "");
+    _builder_2.newLineIfNotEmpty();
+    _builder_2.append("put(\"");
+    _builder_2.append(IDataMart.singleSelectDecorator, "");
+    String _entityAlias_1 = this.getEntityAlias(entity);
+    _builder_2.append(_entityAlias_1, "");
+    _builder_2.append(".id");
+    _builder_2.append(IDataMart.singleSelectDecorator, "");
+    _builder_2.append("\",\"");
+    _builder_2.append(filter, "");
+    _builder_2.append("\");");
+    text = _builder_2.toString();
+    return text;
+  }
+  
+  /**
+   * <p>build the sql filter condition depending on an entity.</p>
+   */
+  public String createSQLFilter(final DatamartCondition condition, final DatamartEntity entity, final DatamartDefinition definition, final HashMap<String, String> filterIdMap) {
+    String text = "";
+    Expression _condition = condition.getCondition();
+    boolean _notEquals = (!Objects.equal(_condition, null));
+    if (_notEquals) {
+      Expression _condition_1 = condition.getCondition();
+      if ((_condition_1 instanceof ConditionalExpression)) {
+        Expression _condition_2 = condition.getCondition();
+        Expression element = ((ConditionalExpression) _condition_2).getRight();
+        Expression _condition_3 = condition.getCondition();
+        Expression _left = ((ConditionalExpression) _condition_3).getLeft();
+        DatamartProperty property = ((DatamartProperty) _left);
+        boolean _or = false;
+        boolean _isFiltered = element.isFiltered();
+        if (_isFiltered) {
+          _or = true;
+        } else {
+          boolean _isSelected = element.isSelected();
+          _or = _isSelected;
+        }
+        if (_or) {
+          boolean _notEquals_1 = (!Objects.equal(filterIdMap, null));
+          if (_notEquals_1) {
+            StringConcatenation _builder = new StringConcatenation();
+            {
+              boolean _isFiltered_1 = element.isFiltered();
+              if (_isFiltered_1) {
+                _builder.append(IDataMart.singleSelectDecorator, "");
+              } else {
+                boolean _isSelected_1 = element.isSelected();
+                if (_isSelected_1) {
+                  _builder.append(IDataMart.multiSelectDecorator, "");
+                }
+              }
+            }
+            String _propertyName = this.getPropertyName(property, entity);
+            _builder.append(_propertyName, "");
+            {
+              boolean _isFiltered_2 = element.isFiltered();
+              if (_isFiltered_2) {
+                _builder.append(IDataMart.singleSelectDecorator, "");
+              } else {
+                boolean _isSelected_2 = element.isSelected();
+                if (_isSelected_2) {
+                  _builder.append(IDataMart.multiSelectDecorator, "");
+                }
+              }
+            }
+            StringConcatenation _builder_1 = new StringConcatenation();
+            EObject _eContainer = definition.eContainer();
+            QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer));
+            _builder_1.append(_fullyQualifiedName, "");
+            _builder_1.append(".");
+            String _name = definition.getName();
+            _builder_1.append(_name, "");
+            _builder_1.append(".");
+            String _propertyName_1 = this.getPropertyName(property, entity);
+            _builder_1.append(_propertyName_1, "");
+            String _string = _builder_1.toString();
+            String _replace = _string.replace(".", "/");
+            filterIdMap.put(_builder.toString(), _replace);
+          }
+          StringConcatenation _builder_2 = new StringConcatenation();
+          {
+            boolean _isOptional = element.isOptional();
+            if (_isOptional) {
+              _builder_2.append("select ");
+              _builder_2.append(IDataMart.sqlFilterNothing, "");
+              _builder_2.append(" from ");
+              _builder_2.append(EnumDatabaseVendor.ONE_ROW_ONE_COLUMN_TABLE, "");
+              _builder_2.append(" union ");
+            }
+          }
+          _builder_2.append("select distinct ");
+          LEntityAttribute _propertyRef = property.getPropertyRef();
+          String _columnName = this._namingExtensions.toColumnName(_propertyRef);
+          _builder_2.append(_columnName, "");
+          _builder_2.append(" as \\\"");
+          LEntityAttribute _propertyRef_1 = property.getPropertyRef();
+          String _name_1 = _propertyRef_1.getName();
+          _builder_2.append(_name_1, "");
+          _builder_2.append("\\\" from ");
+          LEntity _entityRef = entity.getEntityRef();
+          LEntityPersistenceInfo _persistenceInfo = _entityRef.getPersistenceInfo();
+          String _schemaName = _persistenceInfo.getSchemaName();
+          CharSequence _provideSchemaName = this.getProvideSchemaName(_schemaName);
+          _builder_2.append(_provideSchemaName, "");
+          LEntity _entityRef_1 = entity.getEntityRef();
+          String _tableName = this._namingExtensions.toTableName(_entityRef_1);
+          _builder_2.append(_tableName, "");
+          String filter = _builder_2.toString();
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append(text, "");
+          _builder_3.append("put(\"");
+          {
+            boolean _isFiltered_3 = element.isFiltered();
+            if (_isFiltered_3) {
+              _builder_3.append(IDataMart.singleSelectDecorator, "");
+            } else {
+              boolean _isSelected_3 = element.isSelected();
+              if (_isSelected_3) {
+                _builder_3.append(IDataMart.multiSelectDecorator, "");
+              }
+            }
+          }
+          String _propertyName_2 = this.getPropertyName(property, entity);
+          _builder_3.append(_propertyName_2, "");
+          {
+            boolean _isFiltered_4 = element.isFiltered();
+            if (_isFiltered_4) {
+              _builder_3.append(IDataMart.singleSelectDecorator, "");
+            } else {
+              boolean _isSelected_4 = element.isSelected();
+              if (_isSelected_4) {
+                _builder_3.append(IDataMart.multiSelectDecorator, "");
+              }
+            }
+          }
+          _builder_3.append("\",\"");
+          _builder_3.append(filter, "");
+          _builder_3.append("\");");
+          text = _builder_3.toString();
+        }
+      }
+    }
+    return text;
+  }
+  
+  /**
+   * <p>build the mdx filter slice depending on a cube.</p>
+   */
+  public String createMDXFilter(final DatamartHierarchy level, final DatamartSource source) {
+    String filter = "select {} on columns,";
+    CubeLevel _levelRef = level.getLevelRef();
+    boolean _notEquals = (!Objects.equal(_levelRef, null));
+    if (_notEquals) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(filter, "");
+      String _levelName = this.getLevelName(level, Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(false));
+      _builder.append(_levelName, "");
+      _builder.append(".members on rows");
+      filter = _builder.toString();
+    }
+    if ((source instanceof DatamartCube)) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(filter, "");
+      _builder_1.append(" from ");
+      CubeType _cubeRef = ((DatamartCube) source).getCubeRef();
+      String _name = _cubeRef.getName();
+      _builder_1.append(_name, "");
+      filter = _builder_1.toString();
+    }
+    return filter;
+  }
+  
+  /**
+   * <p>helper to get a level name.</p>
+   */
+  public String getFilterAlias(final DatamartHierarchy level) {
+    String text = "";
+    CubeLevel _levelRef = level.getLevelRef();
+    boolean _notEquals = (!Objects.equal(_levelRef, null));
+    if (_notEquals) {
+      StringConcatenation _builder = new StringConcatenation();
+      String _dimensionName = this.getDimensionName(level, Boolean.valueOf(false));
+      _builder.append(_dimensionName, "");
+      CubeLevel _levelRef_1 = level.getLevelRef();
+      String _name = _levelRef_1.getName();
+      String _firstUpper = StringExtensions.toFirstUpper(_name);
+      _builder.append(_firstUpper, "");
+      text = _builder.toString();
+    }
+    return text;
+  }
+  
+  /**
+   * <p>mdx syntax part for aggregations on sets.</p>
+   */
+  public String createSetAggregation(final List<DatamartSetAggregation> usedSetAggregation, final Boolean nonEmpty) {
+    String set = "";
+    boolean firstTuple = true;
+    for (final DatamartSetAggregation element : usedSetAggregation) {
+      {
+        if (firstTuple) {
+          firstTuple = false;
+        } else {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(set, "");
+          _builder.append(",");
+          set = _builder.toString();
+        }
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append(set, "");
+        String _evaluateExpression = this.evaluateExpression(element, null);
+        _builder_1.append(_evaluateExpression, "");
+        set = _builder_1.toString();
+      }
+    }
+    int _size = usedSetAggregation.size();
+    boolean _greaterThan = (_size > 1);
+    if (_greaterThan) {
+      StringConcatenation _builder = new StringConcatenation();
+      {
+        if ((nonEmpty).booleanValue()) {
+          _builder.append("Non Empty");
+        }
+      }
+      _builder.append("{");
+      _builder.append(set, "");
+      _builder.append("}");
+      set = _builder.toString();
+    } else {
+      int _size_1 = usedSetAggregation.size();
+      boolean _greaterThan_1 = (_size_1 > 0);
+      if (_greaterThan_1) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        {
+          if ((nonEmpty).booleanValue()) {
+            _builder_1.append("Non Empty ");
+          }
+        }
+        _builder_1.append(set, "");
+        set = _builder_1.toString();
+      }
+    }
+    return set;
+  }
+  
+  /**
+   * <p>mdx syntax part for hierarchies.</p>
+   */
+  public String createHierarchies(final List<DatamartHierarchy> usedHierarchies, final Boolean nonEmpty) {
+    String set = "";
+    boolean firstTuple = true;
+    for (final DatamartHierarchy element : usedHierarchies) {
+      {
+        if (firstTuple) {
+          firstTuple = false;
+        } else {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(set, "");
+          _builder.append(",");
+          set = _builder.toString();
+        }
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append(set, "");
+        String _levelName = this.getLevelName(element, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+        _builder_1.append(_levelName, "");
+        set = _builder_1.toString();
+      }
+    }
+    int _size = usedHierarchies.size();
+    boolean _greaterThan = (_size > 1);
+    if (_greaterThan) {
+      StringConcatenation _builder = new StringConcatenation();
+      {
+        if ((nonEmpty).booleanValue()) {
+          _builder.append("Non Empty");
+        }
+      }
+      _builder.append("{");
+      _builder.append(set, "");
+      _builder.append("}");
+      set = _builder.toString();
+    } else {
+      int _size_1 = usedHierarchies.size();
+      boolean _greaterThan_1 = (_size_1 > 0);
+      if (_greaterThan_1) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        {
+          if ((nonEmpty).booleanValue()) {
+            _builder_1.append("Non Empty ");
+          }
+        }
+        _builder_1.append(set, "");
+        set = _builder_1.toString();
+      }
+    }
+    return set;
+  }
+  
+  /**
+   * <p>mdx syntax part for measures.</p>
+   */
+  public String createMeasures(final List<DatamartMeasure> usedMeasures, final List<DatamartDerivedMeasure> usedDerived, final Boolean nonEmpty) {
+    String set = "";
+    boolean firstTuple = true;
+    for (final DatamartMeasure element : usedMeasures) {
+      {
+        if (firstTuple) {
+          firstTuple = false;
+        } else {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(set, "");
+          _builder.append(",");
+          set = _builder.toString();
+        }
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append(set, "");
+        String _measureName = this.getMeasureName(element);
+        _builder_1.append(_measureName, "");
+        set = _builder_1.toString();
+      }
+    }
+    for (final DatamartDerivedMeasure element_1 : usedDerived) {
+      {
+        if (firstTuple) {
+          firstTuple = false;
+        } else {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append(set, "");
+          _builder.append(",");
+          set = _builder.toString();
+        }
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append(set, "");
+        String _derivedMeasureName = this.getDerivedMeasureName(element_1);
+        _builder_1.append(_derivedMeasureName, "");
+        set = _builder_1.toString();
+      }
+    }
+    int _size = usedMeasures.size();
+    int _size_1 = usedDerived.size();
+    int _plus = (_size + _size_1);
+    boolean _greaterThan = (_plus > 1);
+    if (_greaterThan) {
+      StringConcatenation _builder = new StringConcatenation();
+      {
+        if ((nonEmpty).booleanValue()) {
+          _builder.append("Non Empty");
+        }
+      }
+      _builder.append("{");
+      _builder.append(set, "");
+      _builder.append("}");
+      set = _builder.toString();
+    } else {
+      int _size_2 = usedMeasures.size();
+      int _size_3 = usedDerived.size();
+      int _plus_1 = (_size_2 + _size_3);
+      boolean _greaterThan_1 = (_plus_1 > 0);
+      if (_greaterThan_1) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        {
+          if ((nonEmpty).booleanValue()) {
+            _builder_1.append("Non Empty ");
+          }
+        }
+        _builder_1.append(set, "");
+        set = _builder_1.toString();
+      }
+    }
+    return set;
+  }
+  
+  /**
+   * <p>the main function to build a mdx statement.</p>
+   */
+  public String createMDXStatement(final DatamartDefinition definition) {
+    DatamartSource _source = definition.getSource();
+    DatamartCube cube = ((DatamartCube) _source);
+    String body = "";
+    String slice = "";
+    String derived = "";
+    boolean firstAxis = true;
+    boolean firstSlice = true;
+    boolean firstderived = true;
+    EList<DatamartCubeElement> _axisslicer = cube.getAxisslicer();
+    for (final DatamartCubeElement axisslicer : _axisslicer) {
+      {
+        if ((axisslicer instanceof DatamartAxis)) {
+          boolean crossJoinMeasure = false;
+          boolean crossJoinHierarchy = false;
+          boolean crossJoinSetAggregation = false;
+          DatamartAxis axis = ((DatamartAxis) axisslicer);
+          if (firstAxis) {
+            firstAxis = false;
+          } else {
+            StringConcatenation _builder = new StringConcatenation();
+            _builder.append(body, "");
+            _builder.append(",");
+            body = _builder.toString();
+          }
+          EList<DatamartElement> _elements = axis.getElements();
+          boolean _notEquals = (!Objects.equal(_elements, null));
+          if (_notEquals) {
+            String set = "";
+            final ArrayList<DatamartHierarchy> usedHierarchies = CollectionLiterals.<DatamartHierarchy>newArrayList();
+            final ArrayList<DatamartMeasure> usedMeasures = CollectionLiterals.<DatamartMeasure>newArrayList();
+            final ArrayList<DatamartDerivedMeasure> usedDerivedMeasure = CollectionLiterals.<DatamartDerivedMeasure>newArrayList();
+            final ArrayList<DatamartSetAggregation> usedSetAggregation = CollectionLiterals.<DatamartSetAggregation>newArrayList();
+            EList<DatamartElement> _elements_1 = axis.getElements();
+            for (final DatamartElement element : _elements_1) {
+              {
+                if ((element instanceof DatamartSetAggregation)) {
+                  boolean _or = false;
+                  int _size = usedMeasures.size();
+                  boolean _greaterThan = (_size > 0);
+                  if (_greaterThan) {
+                    _or = true;
+                  } else {
+                    int _size_1 = usedDerivedMeasure.size();
+                    boolean _greaterThan_1 = (_size_1 > 0);
+                    _or = _greaterThan_1;
+                  }
+                  if (_or) {
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_1 = new StringConcatenation();
+                      _builder_1.append(set, "");
+                      _builder_1.append(",");
+                      set = _builder_1.toString();
+                    }
+                    StringConcatenation _builder_2 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty = cube.isNonEmpty();
+                      if (_isNonEmpty) {
+                        _builder_2.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_2.append("CrossJoin");
+                      }
+                    }
+                    _builder_2.append("(");
+                    _builder_2.append(set, "");
+                    String _createMeasures = this.createMeasures(usedMeasures, usedDerivedMeasure, Boolean.valueOf(false));
+                    _builder_2.append(_createMeasures, "");
+                    set = _builder_2.toString();
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_3 = new StringConcatenation();
+                      _builder_3.append(set, "");
+                      _builder_3.append(")");
+                      set = _builder_3.toString();
+                    }
+                    usedMeasures.clear();
+                    usedDerivedMeasure.clear();
+                    crossJoinSetAggregation = true;
+                  }
+                  int _size_2 = usedHierarchies.size();
+                  boolean _greaterThan_2 = (_size_2 > 0);
+                  if (_greaterThan_2) {
+                    if (crossJoinHierarchy) {
+                      StringConcatenation _builder_4 = new StringConcatenation();
+                      _builder_4.append(set, "");
+                      _builder_4.append(",");
+                      set = _builder_4.toString();
+                    }
+                    StringConcatenation _builder_5 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_1 = cube.isNonEmpty();
+                      if (_isNonEmpty_1) {
+                        _builder_5.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_5.append("CrossJoin");
+                      }
+                    }
+                    _builder_5.append("(");
+                    _builder_5.append(set, "");
+                    String _createHierarchies = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
+                    _builder_5.append(_createHierarchies, "");
+                    set = _builder_5.toString();
+                    if (crossJoinHierarchy) {
+                      StringConcatenation _builder_6 = new StringConcatenation();
+                      _builder_6.append(set, "");
+                      _builder_6.append(")");
+                      set = _builder_6.toString();
+                    }
+                    usedHierarchies.clear();
+                    crossJoinSetAggregation = true;
+                  }
+                  DatamartSetAggregation setAggregation = ((DatamartSetAggregation) element);
+                  usedSetAggregation.add(setAggregation);
+                }
+                if ((element instanceof DatamartHierarchy)) {
+                  boolean _or_1 = false;
+                  int _size_3 = usedMeasures.size();
+                  boolean _greaterThan_3 = (_size_3 > 0);
+                  if (_greaterThan_3) {
+                    _or_1 = true;
+                  } else {
+                    int _size_4 = usedDerivedMeasure.size();
+                    boolean _greaterThan_4 = (_size_4 > 0);
+                    _or_1 = _greaterThan_4;
+                  }
+                  if (_or_1) {
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_7 = new StringConcatenation();
+                      _builder_7.append(set, "");
+                      _builder_7.append(",");
+                      set = _builder_7.toString();
+                    }
+                    StringConcatenation _builder_8 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_2 = cube.isNonEmpty();
+                      if (_isNonEmpty_2) {
+                        _builder_8.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_8.append("CrossJoin");
+                      }
+                    }
+                    _builder_8.append("(");
+                    _builder_8.append(set, "");
+                    String _createMeasures_1 = this.createMeasures(usedMeasures, usedDerivedMeasure, Boolean.valueOf(false));
+                    _builder_8.append(_createMeasures_1, "");
+                    set = _builder_8.toString();
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_9 = new StringConcatenation();
+                      _builder_9.append(set, "");
+                      _builder_9.append(")");
+                      set = _builder_9.toString();
+                    }
+                    usedMeasures.clear();
+                    usedDerivedMeasure.clear();
+                    crossJoinMeasure = true;
+                  }
+                  int _size_5 = usedSetAggregation.size();
+                  boolean _greaterThan_5 = (_size_5 > 0);
+                  if (_greaterThan_5) {
+                    if (crossJoinSetAggregation) {
+                      StringConcatenation _builder_10 = new StringConcatenation();
+                      _builder_10.append(set, "");
+                      _builder_10.append(",");
+                      set = _builder_10.toString();
+                    }
+                    StringConcatenation _builder_11 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_3 = cube.isNonEmpty();
+                      if (_isNonEmpty_3) {
+                        _builder_11.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_11.append("CrossJoin");
+                      }
+                    }
+                    _builder_11.append("(");
+                    _builder_11.append(set, "");
+                    String _createSetAggregation = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(false));
+                    _builder_11.append(_createSetAggregation, "");
+                    set = _builder_11.toString();
+                    if (crossJoinSetAggregation) {
+                      StringConcatenation _builder_12 = new StringConcatenation();
+                      _builder_12.append(set, "");
+                      _builder_12.append(")");
+                      set = _builder_12.toString();
+                    }
+                    usedSetAggregation.clear();
+                    crossJoinSetAggregation = true;
+                  }
+                  DatamartHierarchy hierarchyLevel = ((DatamartHierarchy) element);
+                  DatamartHierarchy lastHierarchy = IterableExtensions.<DatamartHierarchy>last(usedHierarchies);
+                  boolean _and = false;
+                  if (!(!crossJoinHierarchy)) {
+                    _and = false;
+                  } else {
+                    boolean _or_2 = false;
+                    boolean _equals = Objects.equal(lastHierarchy, null);
+                    if (_equals) {
+                      _or_2 = true;
+                    } else {
+                      String _hierarchyName = this.getHierarchyName(hierarchyLevel);
+                      String _hierarchyName_1 = this.getHierarchyName(lastHierarchy);
+                      boolean _equals_1 = _hierarchyName.equals(_hierarchyName_1);
+                      _or_2 = _equals_1;
+                    }
+                    _and = _or_2;
+                  }
+                  if (_and) {
+                    usedHierarchies.add(hierarchyLevel);
+                  } else {
+                    if (crossJoinHierarchy) {
+                      StringConcatenation _builder_13 = new StringConcatenation();
+                      _builder_13.append(set, "");
+                      _builder_13.append(",");
+                      set = _builder_13.toString();
+                    }
+                    StringConcatenation _builder_14 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_4 = cube.isNonEmpty();
+                      if (_isNonEmpty_4) {
+                        _builder_14.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_14.append("CrossJoin");
+                      }
+                    }
+                    _builder_14.append("(");
+                    _builder_14.append(set, "");
+                    String _createHierarchies_1 = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
+                    _builder_14.append(_createHierarchies_1, "");
+                    set = _builder_14.toString();
+                    if (crossJoinHierarchy) {
+                      StringConcatenation _builder_15 = new StringConcatenation();
+                      _builder_15.append(set, "");
+                      _builder_15.append(")");
+                      set = _builder_15.toString();
+                    }
+                    usedHierarchies.clear();
+                    usedHierarchies.add(hierarchyLevel);
+                    crossJoinHierarchy = true;
+                  }
+                }
+                if ((element instanceof DatamartMeasure)) {
+                  int _size_6 = usedHierarchies.size();
+                  boolean _greaterThan_6 = (_size_6 > 0);
+                  if (_greaterThan_6) {
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_16 = new StringConcatenation();
+                      _builder_16.append(set, "");
+                      _builder_16.append(",");
+                      set = _builder_16.toString();
+                    }
+                    StringConcatenation _builder_17 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_5 = cube.isNonEmpty();
+                      if (_isNonEmpty_5) {
+                        _builder_17.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_17.append("CrossJoin");
+                      }
+                    }
+                    _builder_17.append("(");
+                    _builder_17.append(set, "");
+                    String _createHierarchies_2 = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
+                    _builder_17.append(_createHierarchies_2, "");
+                    set = _builder_17.toString();
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_18 = new StringConcatenation();
+                      _builder_18.append(set, "");
+                      _builder_18.append(")");
+                      set = _builder_18.toString();
+                    }
+                    usedHierarchies.clear();
+                    crossJoinMeasure = true;
+                  }
+                  int _size_7 = usedSetAggregation.size();
+                  boolean _greaterThan_7 = (_size_7 > 0);
+                  if (_greaterThan_7) {
+                    if (crossJoinSetAggregation) {
+                      StringConcatenation _builder_19 = new StringConcatenation();
+                      _builder_19.append(set, "");
+                      _builder_19.append(",");
+                      set = _builder_19.toString();
+                    }
+                    StringConcatenation _builder_20 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_6 = cube.isNonEmpty();
+                      if (_isNonEmpty_6) {
+                        _builder_20.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_20.append("CrossJoin");
+                      }
+                    }
+                    _builder_20.append("(");
+                    _builder_20.append(set, "");
+                    String _createSetAggregation_1 = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(false));
+                    _builder_20.append(_createSetAggregation_1, "");
+                    set = _builder_20.toString();
+                    if (crossJoinSetAggregation) {
+                      StringConcatenation _builder_21 = new StringConcatenation();
+                      _builder_21.append(set, "");
+                      _builder_21.append(")");
+                      set = _builder_21.toString();
+                    }
+                    usedSetAggregation.clear();
+                    crossJoinSetAggregation = true;
+                  }
+                  DatamartMeasure measure = ((DatamartMeasure) element);
+                  usedMeasures.add(measure);
+                }
+                if ((element instanceof DatamartDerivedMeasure)) {
+                  int _size_8 = usedHierarchies.size();
+                  boolean _greaterThan_8 = (_size_8 > 0);
+                  if (_greaterThan_8) {
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_22 = new StringConcatenation();
+                      _builder_22.append(set, "");
+                      _builder_22.append(",");
+                      set = _builder_22.toString();
+                    }
+                    StringConcatenation _builder_23 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_7 = cube.isNonEmpty();
+                      if (_isNonEmpty_7) {
+                        _builder_23.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_23.append("CrossJoin");
+                      }
+                    }
+                    _builder_23.append("(");
+                    _builder_23.append(set, "");
+                    String _createHierarchies_3 = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
+                    _builder_23.append(_createHierarchies_3, "");
+                    set = _builder_23.toString();
+                    if (crossJoinMeasure) {
+                      StringConcatenation _builder_24 = new StringConcatenation();
+                      _builder_24.append(set, "");
+                      _builder_24.append(")");
+                      set = _builder_24.toString();
+                    }
+                    usedHierarchies.clear();
+                    crossJoinMeasure = true;
+                  }
+                  int _size_9 = usedSetAggregation.size();
+                  boolean _greaterThan_9 = (_size_9 > 0);
+                  if (_greaterThan_9) {
+                    if (crossJoinSetAggregation) {
+                      StringConcatenation _builder_25 = new StringConcatenation();
+                      _builder_25.append(set, "");
+                      _builder_25.append(",");
+                      set = _builder_25.toString();
+                    }
+                    StringConcatenation _builder_26 = new StringConcatenation();
+                    {
+                      boolean _isNonEmpty_8 = cube.isNonEmpty();
+                      if (_isNonEmpty_8) {
+                        _builder_26.append("NonEmptyCrossjoin");
+                      } else {
+                        _builder_26.append("CrossJoin");
+                      }
+                    }
+                    _builder_26.append("(");
+                    _builder_26.append(set, "");
+                    String _createSetAggregation_2 = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(false));
+                    _builder_26.append(_createSetAggregation_2, "");
+                    set = _builder_26.toString();
+                    if (crossJoinSetAggregation) {
+                      StringConcatenation _builder_27 = new StringConcatenation();
+                      _builder_27.append(set, "");
+                      _builder_27.append(")");
+                      set = _builder_27.toString();
+                    }
+                    usedSetAggregation.clear();
+                    crossJoinSetAggregation = true;
+                  }
+                  DatamartDerivedMeasure measure_1 = ((DatamartDerivedMeasure) element);
+                  usedDerivedMeasure.add(measure_1);
+                }
+              }
+            }
+            if (((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)) {
+              StringConcatenation _builder_1 = new StringConcatenation();
+              _builder_1.append(set, "");
+              _builder_1.append(",");
+              set = _builder_1.toString();
+            }
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append(set, "");
+            boolean _and = false;
+            boolean _isNonEmpty = cube.isNonEmpty();
+            if (!_isNonEmpty) {
+              _and = false;
+            } else {
+              _and = (!((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation));
+            }
+            String _createHierarchies = this.createHierarchies(usedHierarchies, Boolean.valueOf(_and));
+            _builder_2.append(_createHierarchies, "");
+            set = _builder_2.toString();
+            usedHierarchies.clear();
+            StringConcatenation _builder_3 = new StringConcatenation();
+            _builder_3.append(set, "");
+            boolean _and_1 = false;
+            boolean _isNonEmpty_1 = cube.isNonEmpty();
+            if (!_isNonEmpty_1) {
+              _and_1 = false;
+            } else {
+              _and_1 = (!((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation));
+            }
+            String _createMeasures = this.createMeasures(usedMeasures, usedDerivedMeasure, Boolean.valueOf(_and_1));
+            _builder_3.append(_createMeasures, "");
+            set = _builder_3.toString();
+            usedMeasures.clear();
+            usedDerivedMeasure.clear();
+            StringConcatenation _builder_4 = new StringConcatenation();
+            _builder_4.append(set, "");
+            boolean _and_2 = false;
+            boolean _isNonEmpty_2 = cube.isNonEmpty();
+            if (!_isNonEmpty_2) {
+              _and_2 = false;
+            } else {
+              _and_2 = (!((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation));
+            }
+            String _createSetAggregation = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(_and_2));
+            _builder_4.append(_createSetAggregation, "");
+            set = _builder_4.toString();
+            usedMeasures.clear();
+            if (((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)) {
+              StringConcatenation _builder_5 = new StringConcatenation();
+              _builder_5.append(set, "");
+              _builder_5.append(")");
+              set = _builder_5.toString();
+            }
+            StringConcatenation _builder_6 = new StringConcatenation();
+            _builder_6.append(body, "");
+            _builder_6.append(set, "");
+            _builder_6.append(" on ");
+            AxisEnum _name = axis.getName();
+            _builder_6.append(_name, "");
+            body = _builder_6.toString();
+          }
+        }
+        if ((axisslicer instanceof DatamartSlicer)) {
+          if (firstSlice) {
+            firstSlice = false;
+          } else {
+            StringConcatenation _builder_7 = new StringConcatenation();
+            _builder_7.append(slice, "");
+            _builder_7.append(",");
+            slice = _builder_7.toString();
+          }
+          DatamartElement element_1 = ((DatamartSlicer) axisslicer).getElement();
+          if ((element_1 instanceof DatamartHierarchy)) {
+            DatamartHierarchy hierarchyLevel = ((DatamartHierarchy) element_1);
+            StringConcatenation _builder_8 = new StringConcatenation();
+            _builder_8.append(slice, "");
+            String _levelName = this.getLevelName(hierarchyLevel, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true));
+            _builder_8.append(_levelName, "");
+            slice = _builder_8.toString();
+          }
+          if ((element_1 instanceof DatamartMeasure)) {
+            StringConcatenation _builder_9 = new StringConcatenation();
+            _builder_9.append(slice, "");
+            String _measureName = this.getMeasureName(((DatamartMeasure) element_1));
+            _builder_9.append(_measureName, "");
+            slice = _builder_9.toString();
+          }
+        }
+        if ((axisslicer instanceof DatamartDefineDerivedMeasure)) {
+          if (firstderived) {
+            firstderived = false;
+          }
+          DatamartDefineDerivedMeasure derivedMeasure = ((DatamartDefineDerivedMeasure) axisslicer);
+          StringConcatenation _builder_10 = new StringConcatenation();
+          _builder_10.append(derived, "");
+          _builder_10.append(" member [Measures].[");
+          String _name_1 = derivedMeasure.getName();
+          _builder_10.append(_name_1, "");
+          _builder_10.append("] as ");
+          String _buildDerivedFormula = this.buildDerivedFormula(derivedMeasure);
+          _builder_10.append(_buildDerivedFormula, "");
+          derived = _builder_10.toString();
+        }
+      }
+    }
+    if ((!firstSlice)) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(" ");
+      _builder.append("where (");
+      _builder.append(slice, " ");
+      _builder.append(")");
+      slice = _builder.toString();
+    }
+    if ((!firstderived)) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("with");
+      _builder_1.append(derived, "");
+      _builder_1.append(" ");
+      derived = _builder_1.toString();
+    }
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append(derived, "");
+    _builder_2.append("select ");
+    _builder_2.append(body, "");
+    _builder_2.append(" from ");
+    CubeType _cubeRef = cube.getCubeRef();
+    String _name = _cubeRef.getName();
+    _builder_2.append(_name, "");
+    _builder_2.append(slice, "");
+    return _builder_2.toString();
+  }
+  
+  public boolean isCrossJoined(final DatamartDefinition definition) {
+    DatamartSource _source = definition.getSource();
+    if ((!(_source instanceof DatamartCube))) {
+      return false;
+    }
+    DatamartSource _source_1 = definition.getSource();
+    DatamartCube cube = ((DatamartCube) _source_1);
+    boolean firstAxis = true;
+    EList<DatamartCubeElement> _axisslicer = cube.getAxisslicer();
+    for (final DatamartCubeElement axisslicer : _axisslicer) {
+      if ((axisslicer instanceof DatamartAxis)) {
+        boolean crossJoinMeasure = false;
+        boolean crossJoinHierarchy = false;
+        boolean crossJoinSetAggregation = false;
+        DatamartAxis axis = ((DatamartAxis) axisslicer);
+        if (firstAxis) {
+          firstAxis = false;
+        }
+        EList<DatamartElement> _elements = axis.getElements();
+        boolean _notEquals = (!Objects.equal(_elements, null));
+        if (_notEquals) {
+          final ArrayList<DatamartHierarchy> usedHierarchies = CollectionLiterals.<DatamartHierarchy>newArrayList();
+          final ArrayList<DatamartMeasure> usedMeasures = CollectionLiterals.<DatamartMeasure>newArrayList();
+          final ArrayList<DatamartDerivedMeasure> usedDerivedMeasure = CollectionLiterals.<DatamartDerivedMeasure>newArrayList();
+          final ArrayList<DatamartSetAggregation> usedSetAggregation = CollectionLiterals.<DatamartSetAggregation>newArrayList();
+          EList<DatamartElement> _elements_1 = axis.getElements();
+          for (final DatamartElement element : _elements_1) {
+            {
+              if ((element instanceof DatamartSetAggregation)) {
+                boolean _or = false;
+                int _size = usedMeasures.size();
+                boolean _greaterThan = (_size > 0);
+                if (_greaterThan) {
+                  _or = true;
+                } else {
+                  int _size_1 = usedDerivedMeasure.size();
+                  boolean _greaterThan_1 = (_size_1 > 0);
+                  _or = _greaterThan_1;
+                }
+                if (_or) {
+                  usedMeasures.clear();
+                  usedDerivedMeasure.clear();
+                  crossJoinSetAggregation = true;
+                }
+                int _size_2 = usedHierarchies.size();
+                boolean _greaterThan_2 = (_size_2 > 0);
+                if (_greaterThan_2) {
+                  usedHierarchies.clear();
+                  crossJoinSetAggregation = true;
+                }
+                DatamartSetAggregation setAggregation = ((DatamartSetAggregation) element);
+                usedSetAggregation.add(setAggregation);
+              }
+              if ((element instanceof DatamartHierarchy)) {
+                boolean _or_1 = false;
+                int _size_3 = usedMeasures.size();
+                boolean _greaterThan_3 = (_size_3 > 0);
+                if (_greaterThan_3) {
+                  _or_1 = true;
+                } else {
+                  int _size_4 = usedDerivedMeasure.size();
+                  boolean _greaterThan_4 = (_size_4 > 0);
+                  _or_1 = _greaterThan_4;
+                }
+                if (_or_1) {
+                  usedMeasures.clear();
+                  usedDerivedMeasure.clear();
+                  crossJoinMeasure = true;
+                }
+                int _size_5 = usedSetAggregation.size();
+                boolean _greaterThan_5 = (_size_5 > 0);
+                if (_greaterThan_5) {
+                  usedSetAggregation.clear();
+                  crossJoinSetAggregation = true;
+                }
+                DatamartHierarchy hierarchyLevel = ((DatamartHierarchy) element);
+                DatamartHierarchy lastHierarchy = IterableExtensions.<DatamartHierarchy>last(usedHierarchies);
+                boolean _and = false;
+                if (!(!crossJoinHierarchy)) {
+                  _and = false;
+                } else {
+                  boolean _or_2 = false;
+                  boolean _equals = Objects.equal(lastHierarchy, null);
+                  if (_equals) {
+                    _or_2 = true;
+                  } else {
+                    String _hierarchyName = this.getHierarchyName(hierarchyLevel);
+                    String _hierarchyName_1 = this.getHierarchyName(lastHierarchy);
+                    boolean _equals_1 = _hierarchyName.equals(_hierarchyName_1);
+                    _or_2 = _equals_1;
+                  }
+                  _and = _or_2;
+                }
+                if (_and) {
+                  usedHierarchies.add(hierarchyLevel);
+                } else {
+                  usedHierarchies.clear();
+                  usedHierarchies.add(hierarchyLevel);
+                  crossJoinHierarchy = true;
+                }
+              }
+              if ((element instanceof DatamartMeasure)) {
+                int _size_6 = usedHierarchies.size();
+                boolean _greaterThan_6 = (_size_6 > 0);
+                if (_greaterThan_6) {
+                  usedHierarchies.clear();
+                  crossJoinMeasure = true;
+                }
+                int _size_7 = usedSetAggregation.size();
+                boolean _greaterThan_7 = (_size_7 > 0);
+                if (_greaterThan_7) {
+                  usedSetAggregation.clear();
+                  crossJoinSetAggregation = true;
+                }
+                DatamartMeasure measure = ((DatamartMeasure) element);
+                usedMeasures.add(measure);
+              }
+              if ((element instanceof DatamartDerivedMeasure)) {
+                int _size_8 = usedHierarchies.size();
+                boolean _greaterThan_8 = (_size_8 > 0);
+                if (_greaterThan_8) {
+                  usedHierarchies.clear();
+                  crossJoinMeasure = true;
+                }
+                int _size_9 = usedSetAggregation.size();
+                boolean _greaterThan_9 = (_size_9 > 0);
+                if (_greaterThan_9) {
+                  usedSetAggregation.clear();
+                  crossJoinSetAggregation = true;
+                }
+                DatamartDerivedMeasure measure_1 = ((DatamartDerivedMeasure) element);
+                usedDerivedMeasure.add(measure_1);
+              }
+            }
+          }
+          usedMeasures.clear();
+          usedDerivedMeasure.clear();
+          usedMeasures.clear();
+        }
+        return ((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation);
+      }
+    }
+    return false;
+  }
+  
+  /**
+   * <p>mdx syntax part for hierarchy names. If a hierarchy itself has no name in the cube definition, the dimension name is used instead</p>
+   */
+  public String getHierarchyName(final DatamartHierarchy hierarchy) {
+    String _xifexpression = null;
+    CubeHierarchy _hierarchyRef = hierarchy.getHierarchyRef();
+    String _name = _hierarchyRef.getName();
+    boolean _equals = Objects.equal(_name, null);
+    if (_equals) {
+      CubeHierarchy _hierarchyRef_1 = hierarchy.getHierarchyRef();
+      EObject _eContainer = _hierarchyRef_1.eContainer();
+      return ((CubeDimension) _eContainer).getName();
+    } else {
+      CubeHierarchy _hierarchyRef_2 = hierarchy.getHierarchyRef();
+      _xifexpression = _hierarchyRef_2.getName();
+    }
+    return _xifexpression;
+  }
+  
+  /**
+   * <p>mdx syntax part for derived measure expressions.</p>
+   */
+  public String buildDerivedFormula(final DatamartDefineDerivedMeasure derivedMeasure) {
+    String formula = "";
+    EList<Expression> _derivedElement = derivedMeasure.getDerivedElement();
+    for (final Expression element : _derivedElement) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(formula, "");
+      String _evaluateExpression = this.evaluateExpression(element, null);
+      _builder.append(_evaluateExpression, "");
+      formula = _builder.toString();
+    }
+    String _concat = "\'".concat(formula);
+    return _concat.concat("\'");
+  }
+  
+  /**
+   * <p>as the grammar makes use of expressions along an abstract syntax tree, we need this recursive dispatcher to synthesize resulting code.</p>
+   */
+  public String evaluateExpression(final Expression element, final DatamartEntity entity) {
+    String evaluation = "";
+    String _value = element.getValue();
+    boolean _notEquals = (!Objects.equal(_value, null));
+    if (_notEquals) {
+      String _value_1 = element.getValue();
+      evaluation = _value_1;
+    }
+    String _numberValue = element.getNumberValue();
+    boolean _notEquals_1 = (!Objects.equal(_numberValue, null));
+    if (_notEquals_1) {
+      String _numberValue_1 = element.getNumberValue();
+      evaluation = _numberValue_1;
+    }
+    String _stringValue = element.getStringValue();
+    boolean _notEquals_2 = (!Objects.equal(_stringValue, null));
+    if (_notEquals_2) {
+      String _stringValue_1 = element.getStringValue();
+      String _concat = "\'".concat(_stringValue_1);
+      String _concat_1 = _concat.concat("\'");
+      evaluation = _concat_1;
+    }
+    boolean _isFiltered = element.isFiltered();
+    if (_isFiltered) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(IDataMart.singleSelectDecorator, "");
+      EObject _eContainer = element.eContainer();
+      Expression _left = ((ConditionalExpression) _eContainer).getLeft();
+      String _propertyName = this.getPropertyName(((DatamartProperty) _left), entity);
+      _builder.append(_propertyName, "");
+      _builder.append(IDataMart.singleSelectDecorator, "");
+      evaluation = _builder.toString();
+    }
+    boolean _isSelected = element.isSelected();
+    if (_isSelected) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(IDataMart.multiSelectDecorator, "");
+      EObject _eContainer_1 = element.eContainer();
+      Expression _left_1 = ((ConditionalExpression) _eContainer_1).getLeft();
+      String _propertyName_1 = this.getPropertyName(((DatamartProperty) _left_1), entity);
+      _builder_1.append(_propertyName_1, "");
+      _builder_1.append(IDataMart.multiSelectDecorator, "");
+      evaluation = _builder_1.toString();
+    }
+    DatamartFunctionInterface _function = element.getFunction();
+    boolean _notEquals_3 = (!Objects.equal(_function, null));
+    if (_notEquals_3) {
+      DatamartFunctionInterface _function_1 = element.getFunction();
+      if ((_function_1 instanceof DatamartFunction)) {
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append(evaluation, "");
+        DatamartHierarchy _hierarchy = element.getHierarchy();
+        String _levelName = this.getLevelName(_hierarchy, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+        _builder_2.append(_levelName, "");
+        _builder_2.append(".");
+        DatamartFunctionInterface _function_2 = element.getFunction();
+        FunctionEnum _function_3 = ((DatamartFunction) _function_2).getFunction();
+        String _name = _function_3.name();
+        _builder_2.append(_name, "");
+        evaluation = _builder_2.toString();
+      }
+      DatamartFunctionInterface _function_4 = element.getFunction();
+      if ((_function_4 instanceof DatamartParameterFunction)) {
+        StringConcatenation _builder_3 = new StringConcatenation();
+        _builder_3.append(evaluation, "");
+        DatamartHierarchy _hierarchy_1 = element.getHierarchy();
+        String _levelName_1 = this.getLevelName(_hierarchy_1, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+        _builder_3.append(_levelName_1, "");
+        _builder_3.append(".");
+        DatamartFunctionInterface _function_5 = element.getFunction();
+        ParameterFunctionEnum _function_6 = ((DatamartParameterFunction) _function_5).getFunction();
+        String _name_1 = _function_6.name();
+        _builder_3.append(_name_1, "");
+        _builder_3.append("(");
+        DatamartFunctionInterface _function_7 = element.getFunction();
+        DatamartFunctionIntParameter _parameter = ((DatamartParameterFunction) _function_7).getParameter();
+        int _value_2 = _parameter.getValue();
+        _builder_3.append(_value_2, "");
+        _builder_3.append(")");
+        evaluation = _builder_3.toString();
+      }
+    }
+    boolean _and = false;
+    DatamartHierarchy _hierarchy_2 = element.getHierarchy();
+    boolean _notEquals_4 = (!Objects.equal(_hierarchy_2, null));
+    if (!_notEquals_4) {
+      _and = false;
+    } else {
+      DatamartFunctionInterface _function_8 = element.getFunction();
+      boolean _equals = Objects.equal(_function_8, null);
+      _and = _equals;
+    }
+    if (_and) {
+      StringConcatenation _builder_4 = new StringConcatenation();
+      _builder_4.append(evaluation, "");
+      DatamartHierarchy _hierarchy_3 = element.getHierarchy();
+      String _levelName_2 = this.getLevelName(_hierarchy_3, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+      _builder_4.append(_levelName_2, "");
+      evaluation = _builder_4.toString();
+    }
+    if ((element instanceof DatamartSetTuple)) {
+      Expression _left_2 = ((DatamartSetTuple) element).getLeft();
+      DatamartSetFunctionInterface _setFunction = _left_2.getSetFunction();
+      boolean _notEquals_5 = (!Objects.equal(_setFunction, null));
+      if (_notEquals_5) {
+        Expression _left_3 = ((DatamartSetTuple) element).getLeft();
+        DatamartSetFunctionInterface _setFunction_1 = _left_3.getSetFunction();
+        if ((_setFunction_1 instanceof DatamartSetFunction)) {
+          StringConcatenation _builder_5 = new StringConcatenation();
+          _builder_5.append(evaluation, "");
+          Expression _left_4 = ((DatamartSetTuple) element).getLeft();
+          DatamartSetFunctionInterface _setFunction_2 = _left_4.getSetFunction();
+          SetFunctionEnum _setFunction_3 = ((DatamartSetFunction) _setFunction_2).getSetFunction();
+          String _name_2 = _setFunction_3.name();
+          _builder_5.append(_name_2, "");
+          _builder_5.append("(");
+          DatamartHierarchy _right = ((DatamartSetTuple) element).getRight();
+          String _levelName_3 = this.getLevelName(_right, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+          _builder_5.append(_levelName_3, "");
+          _builder_5.append(")");
+          evaluation = _builder_5.toString();
+        }
+        Expression _left_5 = ((DatamartSetTuple) element).getLeft();
+        DatamartSetFunctionInterface _setFunction_4 = _left_5.getSetFunction();
+        if ((_setFunction_4 instanceof DatamartSetParameterFunction)) {
+          StringConcatenation _builder_6 = new StringConcatenation();
+          _builder_6.append(evaluation, "");
+          Expression _left_6 = ((DatamartSetTuple) element).getLeft();
+          DatamartSetFunctionInterface _setFunction_5 = _left_6.getSetFunction();
+          SetParameterFunctionEnum _setFunction_6 = ((DatamartSetParameterFunction) _setFunction_5).getSetFunction();
+          String _name_3 = _setFunction_6.name();
+          _builder_6.append(_name_3, "");
+          _builder_6.append("(");
+          DatamartHierarchy _right_1 = ((DatamartSetTuple) element).getRight();
+          String _levelName_4 = this.getLevelName(_right_1, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+          _builder_6.append(_levelName_4, "");
+          _builder_6.append(",");
+          Expression _left_7 = ((DatamartSetTuple) element).getLeft();
+          DatamartSetFunctionInterface _setFunction_7 = _left_7.getSetFunction();
+          DatamartFunctionIntParameter _parameter_1 = ((DatamartSetParameterFunction) _setFunction_7).getParameter();
+          int _value_3 = ((DatamartFunctionIntParameter) _parameter_1).getValue();
+          _builder_6.append(_value_3, "");
+          _builder_6.append(")");
+          evaluation = _builder_6.toString();
+        }
+      }
+    }
+    if ((element instanceof DatamartMeasure)) {
+      StringConcatenation _builder_7 = new StringConcatenation();
+      String _measureName = this.getMeasureName(((DatamartMeasure) element));
+      _builder_7.append(_measureName, "");
+      evaluation = _builder_7.toString();
+    }
+    if ((element instanceof DatamartDerivedMeasure)) {
+      StringConcatenation _builder_8 = new StringConcatenation();
+      String _derivedMeasureName = this.getDerivedMeasureName(((DatamartDerivedMeasure) element));
+      _builder_8.append(_derivedMeasureName, "");
+      evaluation = _builder_8.toString();
+    }
+    if ((element instanceof DatamartHierarchy)) {
+      StringConcatenation _builder_9 = new StringConcatenation();
+      String _levelName_5 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+      _builder_9.append(_levelName_5, "");
+      evaluation = _builder_9.toString();
+    }
+    if ((element instanceof DatamartProperty)) {
+      StringConcatenation _builder_10 = new StringConcatenation();
+      String _propertyName_2 = this.getPropertyName(((DatamartProperty) element), entity);
+      _builder_10.append(_propertyName_2, "");
+      evaluation = _builder_10.toString();
+      LEntityAttribute _propertyRef = ((DatamartProperty) element).getPropertyRef();
+      LScalarType type = _propertyRef.getType();
+      String typeName = "";
+      boolean _and_1 = false;
+      boolean _and_2 = false;
+      boolean _notEquals_6 = (!Objects.equal(type, null));
+      if (!_notEquals_6) {
+        _and_2 = false;
+      } else {
+        _and_2 = (type instanceof LDataType);
+      }
+      if (!_and_2) {
+        _and_1 = false;
+      } else {
+        JvmTypeReference _jvmTypeReference = ((LDataType) type).getJvmTypeReference();
+        boolean _notEquals_7 = (!Objects.equal(_jvmTypeReference, null));
+        _and_1 = _notEquals_7;
+      }
+      if (_and_1) {
+        JvmTypeReference _jvmTypeReference_1 = ((LDataType) type).getJvmTypeReference();
+        String _simpleName = _jvmTypeReference_1.getSimpleName();
+        typeName = _simpleName;
+      } else {
+        String _name_4 = type.getName();
+        typeName = _name_4;
+      }
+    }
+    if ((element instanceof Multiplication)) {
+      StringConcatenation _builder_11 = new StringConcatenation();
+      Expression _left_8 = ((Multiplication) element).getLeft();
+      String _evaluateExpression = this.evaluateExpression(_left_8, entity);
+      _builder_11.append(_evaluateExpression, "");
+      evaluation = _builder_11.toString();
+      StringConcatenation _builder_12 = new StringConcatenation();
+      _builder_12.append(evaluation, "");
+      _builder_12.append("*");
+      evaluation = _builder_12.toString();
+      StringConcatenation _builder_13 = new StringConcatenation();
+      _builder_13.append(evaluation, "");
+      Expression _right_2 = ((Multiplication) element).getRight();
+      String _evaluateExpression_1 = this.evaluateExpression(_right_2, entity);
+      _builder_13.append(_evaluateExpression_1, "");
+      evaluation = _builder_13.toString();
+    }
+    if ((element instanceof Division)) {
+      StringConcatenation _builder_14 = new StringConcatenation();
+      Expression _left_9 = ((Division) element).getLeft();
+      String _evaluateExpression_2 = this.evaluateExpression(_left_9, entity);
+      _builder_14.append(_evaluateExpression_2, "");
+      evaluation = _builder_14.toString();
+      StringConcatenation _builder_15 = new StringConcatenation();
+      _builder_15.append(evaluation, "");
+      _builder_15.append("/");
+      evaluation = _builder_15.toString();
+      StringConcatenation _builder_16 = new StringConcatenation();
+      _builder_16.append(evaluation, "");
+      Expression _right_3 = ((Division) element).getRight();
+      String _evaluateExpression_3 = this.evaluateExpression(_right_3, entity);
+      _builder_16.append(_evaluateExpression_3, "");
+      evaluation = _builder_16.toString();
+    }
+    if ((element instanceof Addition)) {
+      StringConcatenation _builder_17 = new StringConcatenation();
+      _builder_17.append("(");
+      Expression _left_10 = ((Addition) element).getLeft();
+      String _evaluateExpression_4 = this.evaluateExpression(_left_10, entity);
+      _builder_17.append(_evaluateExpression_4, "");
+      evaluation = _builder_17.toString();
+      StringConcatenation _builder_18 = new StringConcatenation();
+      _builder_18.append(evaluation, "");
+      _builder_18.append("+");
+      evaluation = _builder_18.toString();
+      StringConcatenation _builder_19 = new StringConcatenation();
+      _builder_19.append(evaluation, "");
+      Expression _right_4 = ((Addition) element).getRight();
+      String _evaluateExpression_5 = this.evaluateExpression(_right_4, entity);
+      _builder_19.append(_evaluateExpression_5, "");
+      _builder_19.append(")");
+      evaluation = _builder_19.toString();
+    }
+    if ((element instanceof Subtraction)) {
+      StringConcatenation _builder_20 = new StringConcatenation();
+      _builder_20.append("(");
+      Expression _left_11 = ((Subtraction) element).getLeft();
+      String _evaluateExpression_6 = this.evaluateExpression(_left_11, entity);
+      _builder_20.append(_evaluateExpression_6, "");
+      evaluation = _builder_20.toString();
+      StringConcatenation _builder_21 = new StringConcatenation();
+      _builder_21.append(evaluation, "");
+      _builder_21.append("-");
+      evaluation = _builder_21.toString();
+      StringConcatenation _builder_22 = new StringConcatenation();
+      _builder_22.append(evaluation, "");
+      Expression _right_5 = ((Subtraction) element).getRight();
+      String _evaluateExpression_7 = this.evaluateExpression(_right_5, entity);
+      _builder_22.append(_evaluateExpression_7, "");
+      _builder_22.append(")");
+      evaluation = _builder_22.toString();
+    }
+    if ((element instanceof Conjunction)) {
+      StringConcatenation _builder_23 = new StringConcatenation();
+      Expression _left_12 = ((Conjunction) element).getLeft();
+      String _evaluateExpression_8 = this.evaluateExpression(_left_12, entity);
+      _builder_23.append(_evaluateExpression_8, "");
+      evaluation = _builder_23.toString();
+      StringConcatenation _builder_24 = new StringConcatenation();
+      _builder_24.append(evaluation, "");
+      _builder_24.append(" and ");
+      evaluation = _builder_24.toString();
+      StringConcatenation _builder_25 = new StringConcatenation();
+      _builder_25.append(evaluation, "");
+      Expression _right_6 = ((Conjunction) element).getRight();
+      String _evaluateExpression_9 = this.evaluateExpression(_right_6, entity);
+      _builder_25.append(_evaluateExpression_9, "");
+      evaluation = _builder_25.toString();
+    }
+    if ((element instanceof Disjunction)) {
+      StringConcatenation _builder_26 = new StringConcatenation();
+      _builder_26.append("(");
+      Expression _left_13 = ((Disjunction) element).getLeft();
+      String _evaluateExpression_10 = this.evaluateExpression(_left_13, entity);
+      _builder_26.append(_evaluateExpression_10, "");
+      evaluation = _builder_26.toString();
+      StringConcatenation _builder_27 = new StringConcatenation();
+      _builder_27.append(evaluation, "");
+      _builder_27.append(" or ");
+      evaluation = _builder_27.toString();
+      StringConcatenation _builder_28 = new StringConcatenation();
+      _builder_28.append(evaluation, "");
+      Expression _right_7 = ((Disjunction) element).getRight();
+      String _evaluateExpression_11 = this.evaluateExpression(_right_7, entity);
+      _builder_28.append(_evaluateExpression_11, "");
+      _builder_28.append(")");
+      evaluation = _builder_28.toString();
+    }
+    if ((element instanceof ConditionalExpression)) {
+      StringConcatenation _builder_29 = new StringConcatenation();
+      Expression _left_14 = ((ConditionalExpression) element).getLeft();
+      String _evaluateExpression_12 = this.evaluateExpression(_left_14, entity);
+      _builder_29.append(_evaluateExpression_12, "");
+      evaluation = _builder_29.toString();
+      Expression _right_8 = ((ConditionalExpression) element).getRight();
+      boolean _isSelected_1 = _right_8.isSelected();
+      if (_isSelected_1) {
+        StringConcatenation _builder_30 = new StringConcatenation();
+        _builder_30.append(evaluation, "");
+        _builder_30.append(" in ");
+        evaluation = _builder_30.toString();
+        StringConcatenation _builder_31 = new StringConcatenation();
+        _builder_31.append(evaluation, "");
+        _builder_31.append("(");
+        Expression _right_9 = ((ConditionalExpression) element).getRight();
+        String _evaluateExpression_13 = this.evaluateExpression(_right_9, entity);
+        _builder_31.append(_evaluateExpression_13, "");
+        _builder_31.append(")");
+        evaluation = _builder_31.toString();
+      } else {
+        StringConcatenation _builder_32 = new StringConcatenation();
+        _builder_32.append(evaluation, "");
+        _builder_32.append(" ");
+        OperatorEnum _operator = ((ConditionalExpression) element).getOperator();
+        String _literal = _operator.getLiteral();
+        _builder_32.append(_literal, "");
+        _builder_32.append(" ");
+        evaluation = _builder_32.toString();
+        StringConcatenation _builder_33 = new StringConcatenation();
+        _builder_33.append(evaluation, "");
+        Expression _right_10 = ((ConditionalExpression) element).getRight();
+        String _evaluateExpression_14 = this.evaluateExpression(_right_10, entity);
+        _builder_33.append(_evaluateExpression_14, "");
+        evaluation = _builder_33.toString();
+      }
+      Expression _right_11 = ((ConditionalExpression) element).getRight();
+      boolean _isOptional = _right_11.isOptional();
+      if (_isOptional) {
+        StringConcatenation _builder_34 = new StringConcatenation();
+        _builder_34.append("(");
+        Expression _right_12 = ((ConditionalExpression) element).getRight();
+        String _evaluateExpression_15 = this.evaluateExpression(_right_12, entity);
+        _builder_34.append(_evaluateExpression_15, "");
+        _builder_34.append("=");
+        _builder_34.append(IDataMart.sqlFilterNothing, "");
+        _builder_34.append(" or ");
+        _builder_34.append(evaluation, "");
+        _builder_34.append(")");
+        evaluation = _builder_34.toString();
+      }
+    }
+    if ((element instanceof DatamartMemberTuple)) {
+      StringConcatenation _builder_35 = new StringConcatenation();
+      _builder_35.append("(");
+      DatamartMeasure _right_13 = ((DatamartMemberTuple) element).getRight();
+      String _evaluateExpression_16 = this.evaluateExpression(_right_13, entity);
+      _builder_35.append(_evaluateExpression_16, "");
+      evaluation = _builder_35.toString();
+      StringConcatenation _builder_36 = new StringConcatenation();
+      _builder_36.append(evaluation, "");
+      _builder_36.append(",");
+      evaluation = _builder_36.toString();
+      StringConcatenation _builder_37 = new StringConcatenation();
+      _builder_37.append(evaluation, "");
+      Expression _left_15 = ((DatamartMemberTuple) element).getLeft();
+      String _evaluateExpression_17 = this.evaluateExpression(_left_15, entity);
+      _builder_37.append(_evaluateExpression_17, "");
+      _builder_37.append(")");
+      evaluation = _builder_37.toString();
+    }
+    if ((element instanceof DatamartAggregation)) {
+      Expression _left_16 = ((DatamartAggregation) element).getLeft();
+      DatamartAggregationFunctionInterface _aggregation = _left_16.getAggregation();
+      boolean _notEquals_8 = (!Objects.equal(_aggregation, null));
+      if (_notEquals_8) {
+        Expression _left_17 = ((DatamartAggregation) element).getLeft();
+        DatamartAggregationFunctionInterface _aggregation_1 = _left_17.getAggregation();
+        if ((_aggregation_1 instanceof DatamartAggregationFunction)) {
+          StringConcatenation _builder_38 = new StringConcatenation();
+          Expression _left_18 = ((DatamartAggregation) element).getLeft();
+          DatamartAggregationFunctionInterface _aggregation_2 = _left_18.getAggregation();
+          AggregationEnum _aggregation_3 = ((DatamartAggregationFunction) _aggregation_2).getAggregation();
+          String _name_5 = _aggregation_3.name();
+          _builder_38.append(_name_5, "");
+          _builder_38.append("(");
+          evaluation = _builder_38.toString();
+          Expression _left_19 = ((DatamartAggregation) element).getLeft();
+          Expression _set = _left_19.getSet();
+          if ((_set instanceof DatamartHierarchy)) {
+            StringConcatenation _builder_39 = new StringConcatenation();
+            _builder_39.append(evaluation, "");
+            Expression _left_20 = ((DatamartAggregation) element).getLeft();
+            Expression _set_1 = _left_20.getSet();
+            String _levelName_6 = this.getLevelName(((DatamartHierarchy) _set_1), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+            _builder_39.append(_levelName_6, "");
+            evaluation = _builder_39.toString();
+          }
+          Expression _left_21 = ((DatamartAggregation) element).getLeft();
+          Expression _set_2 = _left_21.getSet();
+          if ((_set_2 instanceof DatamartSetTuple)) {
+            StringConcatenation _builder_40 = new StringConcatenation();
+            _builder_40.append(evaluation, "");
+            Expression _left_22 = ((DatamartAggregation) element).getLeft();
+            Expression _set_3 = _left_22.getSet();
+            String _evaluateExpression_18 = this.evaluateExpression(((DatamartSetTuple) _set_3), entity);
+            _builder_40.append(_evaluateExpression_18, "");
+            evaluation = _builder_40.toString();
+          }
+        }
+      }
+      StringConcatenation _builder_41 = new StringConcatenation();
+      _builder_41.append(evaluation, "");
+      _builder_41.append(",");
+      evaluation = _builder_41.toString();
+      StringConcatenation _builder_42 = new StringConcatenation();
+      _builder_42.append(evaluation, "");
+      DatamartMeasure _right_14 = ((DatamartAggregation) element).getRight();
+      String _evaluateExpression_19 = this.evaluateExpression(_right_14, entity);
+      _builder_42.append(_evaluateExpression_19, "");
+      _builder_42.append(")");
+      evaluation = _builder_42.toString();
+    }
+    if ((element instanceof DatamartSetAggregation)) {
+      Expression _left_23 = ((DatamartSetAggregation) element).getLeft();
+      DatamartAggregationFunctionInterface _aggregation_4 = _left_23.getAggregation();
+      boolean _notEquals_9 = (!Objects.equal(_aggregation_4, null));
+      if (_notEquals_9) {
+        Expression _left_24 = ((DatamartSetAggregation) element).getLeft();
+        DatamartAggregationFunctionInterface _aggregation_5 = _left_24.getAggregation();
+        if ((_aggregation_5 instanceof DatamartSetAggregationFunction)) {
+          StringConcatenation _builder_43 = new StringConcatenation();
+          Expression _left_25 = ((DatamartSetAggregation) element).getLeft();
+          DatamartAggregationFunctionInterface _aggregation_6 = _left_25.getAggregation();
+          SetAggregationEnum _aggregation_7 = ((DatamartSetAggregationFunction) _aggregation_6).getAggregation();
+          String _name_6 = _aggregation_7.name();
+          _builder_43.append(_name_6, "");
+          _builder_43.append("(");
+          evaluation = _builder_43.toString();
+          Expression _left_26 = ((DatamartSetAggregation) element).getLeft();
+          Expression _set_4 = _left_26.getSet();
+          if ((_set_4 instanceof DatamartHierarchy)) {
+            StringConcatenation _builder_44 = new StringConcatenation();
+            _builder_44.append(evaluation, "");
+            Expression _left_27 = ((DatamartSetAggregation) element).getLeft();
+            Expression _set_5 = _left_27.getSet();
+            String _levelName_7 = this.getLevelName(((DatamartHierarchy) _set_5), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
+            _builder_44.append(_levelName_7, "");
+            evaluation = _builder_44.toString();
+          }
+          Expression _left_28 = ((DatamartSetAggregation) element).getLeft();
+          Expression _set_6 = _left_28.getSet();
+          if ((_set_6 instanceof DatamartSetTuple)) {
+            StringConcatenation _builder_45 = new StringConcatenation();
+            _builder_45.append(evaluation, "");
+            Expression _left_29 = ((DatamartSetAggregation) element).getLeft();
+            Expression _set_7 = _left_29.getSet();
+            String _evaluateExpression_20 = this.evaluateExpression(((DatamartSetTuple) _set_7), entity);
+            _builder_45.append(_evaluateExpression_20, "");
+            evaluation = _builder_45.toString();
+          }
+        }
+      }
+      StringConcatenation _builder_46 = new StringConcatenation();
+      _builder_46.append(evaluation, "");
+      _builder_46.append(",");
+      Expression _left_30 = ((DatamartSetAggregation) element).getLeft();
+      DatamartAggregationFunctionInterface _aggregation_8 = _left_30.getAggregation();
+      DatamartFunctionIntParameter _parameter_2 = ((DatamartSetAggregationFunction) _aggregation_8).getParameter();
+      int _value_4 = ((DatamartFunctionIntParameter) _parameter_2).getValue();
+      _builder_46.append(_value_4, "");
+      _builder_46.append(",");
+      evaluation = _builder_46.toString();
+      StringConcatenation _builder_47 = new StringConcatenation();
+      _builder_47.append(evaluation, "");
+      DatamartMeasure _right_15 = ((DatamartSetAggregation) element).getRight();
+      String _evaluateExpression_21 = this.evaluateExpression(_right_15, entity);
+      _builder_47.append(_evaluateExpression_21, "");
+      _builder_47.append(")");
+      evaluation = _builder_47.toString();
+    }
+    return evaluation;
+  }
+  
+  /**
+   * <p>mdx syntax part for property names, full qualified and aliased>
+   */
+  public String getPropertyName(final DatamartProperty property, final DatamartEntity entity) {
+    boolean _notEquals = (!Objects.equal(entity, null));
+    if (_notEquals) {
+      StringConcatenation _builder = new StringConcatenation();
+      String _entityAlias = this.getEntityAlias(entity);
+      _builder.append(_entityAlias, "");
+      _builder.append(".");
+      LEntityAttribute _propertyRef = property.getPropertyRef();
+      String _columnName = this._namingExtensions.toColumnName(_propertyRef);
+      _builder.append(_columnName, "");
+      return _builder.toString();
+    } else {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      LEntityAttribute _propertyRef_1 = property.getPropertyRef();
+      EObject _eContainer = _propertyRef_1.eContainer();
+      String _name = ((LEntity) _eContainer).getName();
+      _builder_1.append(_name, "");
+      _builder_1.append(".");
+      LEntityAttribute _propertyRef_2 = property.getPropertyRef();
+      String _columnName_1 = this._namingExtensions.toColumnName(_propertyRef_2);
+      _builder_1.append(_columnName_1, "");
+      return _builder_1.toString();
+    }
+  }
+  
+  /**
+   * <p>mdx syntax part for measure names.</p>
+   */
+  public String getMeasureName(final DatamartMeasure measure) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("[Measures].[");
+    CubeMeasure _measureRef = measure.getMeasureRef();
+    String _name = _measureRef.getName();
+    _builder.append(_name, "");
+    _builder.append("]");
+    return _builder.toString();
+  }
+  
+  /**
+   * <p>mdx syntax part for derived measure names.</p>
+   */
+  public String getDerivedMeasureName(final DatamartDerivedMeasure measure) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("[Measures].[");
+    DatamartDefineDerivedMeasure _derivedRef = measure.getDerivedRef();
+    String _name = _derivedRef.getName();
+    _builder.append(_name, "");
+    _builder.append("]");
+    return _builder.toString();
+  }
+  
+  /**
+   * <p>mdx syntax part for dimension names.</p>
+   */
+  public String getDimensionName(final DatamartHierarchy hierarchy, final Boolean withBrackets) {
+    String dim = "";
+    CubeHierarchy _hierarchyRef = hierarchy.getHierarchyRef();
+    EObject _eContainer = _hierarchyRef.eContainer();
+    boolean _notEquals = (!Objects.equal(_eContainer, null));
+    if (_notEquals) {
+      CubeHierarchy _hierarchyRef_1 = hierarchy.getHierarchyRef();
+      String _name = _hierarchyRef_1.getName();
+      boolean _equals = Objects.equal(_name, null);
+      if (_equals) {
+        StringConcatenation _builder = new StringConcatenation();
+        {
+          if ((withBrackets).booleanValue()) {
+            _builder.append("[");
+          }
+        }
+        CubeHierarchy _hierarchyRef_2 = hierarchy.getHierarchyRef();
+        EObject _eContainer_1 = _hierarchyRef_2.eContainer();
+        String _name_1 = ((CubeDimension) _eContainer_1).getName();
+        _builder.append(_name_1, "");
+        {
+          if ((withBrackets).booleanValue()) {
+            _builder.append("]");
+          }
+        }
+        dim = _builder.toString();
+      } else {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        {
+          if ((withBrackets).booleanValue()) {
+            _builder_1.append("[");
+          }
+        }
+        CubeHierarchy _hierarchyRef_3 = hierarchy.getHierarchyRef();
+        String _name_2 = _hierarchyRef_3.getName();
+        _builder_1.append(_name_2, "");
+        {
+          if ((withBrackets).booleanValue()) {
+            _builder_1.append("]");
+          }
+        }
+        dim = _builder_1.toString();
+      }
+    }
+    return dim;
+  }
+  
+  /**
+   * <p>mdx syntax part for level names.</p>
+   */
+  public String getLevelName(final DatamartHierarchy hierarchy, final Boolean withBrackets, final Boolean withFiltermask, final Boolean withFunctions, final Boolean isSlicer) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _dimensionName = this.getDimensionName(hierarchy, withBrackets);
+    _builder.append(_dimensionName, "");
+    String text = _builder.toString();
+    CubeLevel _levelRef = hierarchy.getLevelRef();
+    boolean _notEquals = (!Objects.equal(_levelRef, null));
+    if (_notEquals) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(text, "");
+      _builder_1.append(".");
+      text = _builder_1.toString();
+      boolean _and = false;
+      boolean _isFiltered = hierarchy.isFiltered();
+      if (!_isFiltered) {
+        _and = false;
+      } else {
+        _and = (withFiltermask).booleanValue();
+      }
+      if (_and) {
+        if ((isSlicer).booleanValue()) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append(IDataMart.slicerSingleSelectDecorator, "");
+          _builder_2.append(text, "");
+          text = _builder_2.toString();
+        } else {
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append(IDataMart.singleSelectDecorator, "");
+          _builder_3.append(text, "");
+          text = _builder_3.toString();
+        }
+      }
+      boolean _and_1 = false;
+      boolean _isSelected = hierarchy.isSelected();
+      if (!_isSelected) {
+        _and_1 = false;
+      } else {
+        _and_1 = (withFiltermask).booleanValue();
+      }
+      if (_and_1) {
+        if ((isSlicer).booleanValue()) {
+          StringConcatenation _builder_4 = new StringConcatenation();
+          _builder_4.append(IDataMart.slicerMultiSelectDecorator, "");
+          _builder_4.append(text, "");
+          text = _builder_4.toString();
+        } else {
+          StringConcatenation _builder_5 = new StringConcatenation();
+          _builder_5.append(IDataMart.multiSelectDecorator, "");
+          _builder_5.append(text, "");
+          text = _builder_5.toString();
+        }
+      }
+      if ((withBrackets).booleanValue()) {
+        StringConcatenation _builder_6 = new StringConcatenation();
+        _builder_6.append(text, "");
+        _builder_6.append("[");
+        text = _builder_6.toString();
+      }
+      StringConcatenation _builder_7 = new StringConcatenation();
+      _builder_7.append(text, "");
+      CubeLevel _levelRef_1 = hierarchy.getLevelRef();
+      String _name = _levelRef_1.getName();
+      _builder_7.append(_name, "");
+      text = _builder_7.toString();
+      if ((withBrackets).booleanValue()) {
+        StringConcatenation _builder_8 = new StringConcatenation();
+        _builder_8.append(text, "");
+        _builder_8.append("]");
+        text = _builder_8.toString();
+      }
+      boolean _and_2 = false;
+      boolean _isFiltered_1 = hierarchy.isFiltered();
+      if (!_isFiltered_1) {
+        _and_2 = false;
+      } else {
+        _and_2 = (withFiltermask).booleanValue();
+      }
+      if (_and_2) {
+        if ((isSlicer).booleanValue()) {
+          StringConcatenation _builder_9 = new StringConcatenation();
+          _builder_9.append(text, "");
+          _builder_9.append(IDataMart.slicerSingleSelectDecorator, "");
+          text = _builder_9.toString();
+        } else {
+          StringConcatenation _builder_10 = new StringConcatenation();
+          _builder_10.append(text, "");
+          _builder_10.append(IDataMart.singleSelectDecorator, "");
+          text = _builder_10.toString();
+        }
+      }
+      boolean _and_3 = false;
+      boolean _isSelected_1 = hierarchy.isSelected();
+      if (!_isSelected_1) {
+        _and_3 = false;
+      } else {
+        _and_3 = (withFiltermask).booleanValue();
+      }
+      if (_and_3) {
+        if ((isSlicer).booleanValue()) {
+          StringConcatenation _builder_11 = new StringConcatenation();
+          _builder_11.append(text, "");
+          _builder_11.append(IDataMart.slicerMultiSelectDecorator, "");
+          text = _builder_11.toString();
+        } else {
+          StringConcatenation _builder_12 = new StringConcatenation();
+          _builder_12.append(text, "");
+          _builder_12.append(IDataMart.multiSelectDecorator, "");
+          text = _builder_12.toString();
+        }
+      }
+      boolean _or = false;
+      boolean _isFiltered_2 = hierarchy.isFiltered();
+      if (_isFiltered_2) {
+        _or = true;
+      } else {
+        boolean _isSelected_2 = hierarchy.isSelected();
+        _or = _isSelected_2;
+      }
+      if (_or) {
+        boolean _and_4 = false;
+        boolean _isAll = hierarchy.isAll();
+        if (!_isAll) {
+          _and_4 = false;
+        } else {
+          _and_4 = (withFunctions).booleanValue();
+        }
+        if (_and_4) {
+          StringConcatenation _builder_13 = new StringConcatenation();
+          _builder_13.append(text, "");
+          _builder_13.append(".Children");
+          text = _builder_13.toString();
+        }
+      } else {
+        if ((withFunctions).booleanValue()) {
+          StringConcatenation _builder_14 = new StringConcatenation();
+          _builder_14.append(text, "");
+          _builder_14.append(".Members");
+          text = _builder_14.toString();
+        }
+      }
+      boolean _and_5 = false;
+      boolean _isExcept = hierarchy.isExcept();
+      if (!_isExcept) {
+        _and_5 = false;
+      } else {
+        _and_5 = (withFunctions).booleanValue();
+      }
+      if (_and_5) {
+        StringConcatenation _builder_15 = new StringConcatenation();
+        _builder_15.append("Except(");
+        _builder_15.append(text, "");
+        _builder_15.append(",{");
+        _builder_15.append(IDataMart.exceptDecorator, "");
+        String _dimensionName_1 = this.getDimensionName(hierarchy, Boolean.valueOf(true));
+        _builder_15.append(_dimensionName_1, "");
+        _builder_15.append(".");
+        {
+          if ((withBrackets).booleanValue()) {
+            _builder_15.append("[");
+          }
+        }
+        CubeLevel _exceptRef = hierarchy.getExceptRef();
+        String _name_1 = _exceptRef.getName();
+        _builder_15.append(_name_1, "");
+        {
+          if ((withBrackets).booleanValue()) {
+            _builder_15.append("]");
+          }
+        }
+        _builder_15.append(IDataMart.exceptDecorator, "");
+        _builder_15.append("})");
+        text = _builder_15.toString();
+      }
+      boolean _and_6 = false;
+      boolean _isOrdered = hierarchy.isOrdered();
+      if (!_isOrdered) {
+        _and_6 = false;
+      } else {
+        _and_6 = (withFunctions).booleanValue();
+      }
+      if (_and_6) {
+        DatamartElement _orderRef = hierarchy.getOrderRef();
+        if ((_orderRef instanceof DatamartMeasure)) {
+          StringConcatenation _builder_16 = new StringConcatenation();
+          _builder_16.append("Order(");
+          _builder_16.append(text, "");
+          _builder_16.append(",");
+          DatamartElement _orderRef_1 = hierarchy.getOrderRef();
+          String _measureName = this.getMeasureName(((DatamartMeasure) _orderRef_1));
+          _builder_16.append(_measureName, "");
+          _builder_16.append(",");
+          {
+            boolean _isDescending = hierarchy.isDescending();
+            if (_isDescending) {
+              _builder_16.append("Desc");
+            } else {
+              _builder_16.append("Asc");
+            }
+          }
+          _builder_16.append(")");
+          text = _builder_16.toString();
+        } else {
+          StringConcatenation _builder_17 = new StringConcatenation();
+          _builder_17.append("Order(");
+          _builder_17.append(text, "");
+          _builder_17.append(",");
+          DatamartElement _orderRef_2 = hierarchy.getOrderRef();
+          String _derivedMeasureName = this.getDerivedMeasureName(((DatamartDerivedMeasure) _orderRef_2));
+          _builder_17.append(_derivedMeasureName, "");
+          _builder_17.append(",");
+          {
+            boolean _isDescending_1 = hierarchy.isDescending();
+            if (_isDescending_1) {
+              _builder_17.append("Desc");
+            } else {
+              _builder_17.append("Asc");
+            }
+          }
+          _builder_17.append(")");
+          text = _builder_17.toString();
+        }
+      }
+    }
+    boolean _and_7 = false;
+    boolean _and_8 = false;
+    CubeLevel _levelRef_2 = hierarchy.getLevelRef();
+    boolean _equals = Objects.equal(_levelRef_2, null);
+    if (!_equals) {
+      _and_8 = false;
+    } else {
+      CubeLevel _exceptRef_1 = hierarchy.getExceptRef();
+      boolean _equals_1 = Objects.equal(_exceptRef_1, null);
+      _and_8 = _equals_1;
+    }
+    if (!_and_8) {
+      _and_7 = false;
+    } else {
+      _and_7 = (withFunctions).booleanValue();
+    }
+    if (_and_7) {
+      boolean _and_9 = false;
+      CubeHierarchy _hierarchyRef = hierarchy.getHierarchyRef();
+      EObject _eContainer = _hierarchyRef.eContainer();
+      boolean _notEquals_1 = (!Objects.equal(_eContainer, null));
+      if (!_notEquals_1) {
+        _and_9 = false;
+      } else {
+        CubeHierarchy _hierarchyRef_1 = hierarchy.getHierarchyRef();
+        EObject _eContainer_1 = _hierarchyRef_1.eContainer();
+        boolean _isTypeTime = ((CubeDimension) _eContainer_1).isTypeTime();
+        boolean _not = (!_isTypeTime);
+        _and_9 = _not;
+      }
+      if (_and_9) {
+        boolean _isAll_1 = hierarchy.isAll();
+        if (_isAll_1) {
+          StringConcatenation _builder_18 = new StringConcatenation();
+          _builder_18.append(text, "");
+          _builder_18.append(".Members");
+          text = _builder_18.toString();
+        } else {
+          boolean _and_10 = false;
+          boolean _isAllMember = hierarchy.isAllMember();
+          if (!_isAllMember) {
+            _and_10 = false;
+          } else {
+            CubeHierarchy _hierarchyRef_2 = hierarchy.getHierarchyRef();
+            boolean _isAllMemberName = _hierarchyRef_2.isAllMemberName();
+            _and_10 = _isAllMemberName;
+          }
+          if (_and_10) {
+            StringConcatenation _builder_19 = new StringConcatenation();
+            _builder_19.append(text, "");
+            _builder_19.append(".[");
+            CubeHierarchy _hierarchyRef_3 = hierarchy.getHierarchyRef();
+            String _allMemberNameValue = _hierarchyRef_3.getAllMemberNameValue();
+            String _replaceAll = _allMemberNameValue.replaceAll("\"", "");
+            _builder_19.append(_replaceAll, "");
+            _builder_19.append("]");
+            text = _builder_19.toString();
+          } else {
+            boolean _isAllLevels = hierarchy.isAllLevels();
+            if (_isAllLevels) {
+              StringConcatenation _builder_20 = new StringConcatenation();
+              _builder_20.append(text, "");
+              _builder_20.append(".AllMembers");
+              text = _builder_20.toString();
+            } else {
+              boolean _and_11 = false;
+              boolean _isDefaultMember = hierarchy.isDefaultMember();
+              if (!_isDefaultMember) {
+                _and_11 = false;
+              } else {
+                CubeHierarchy _hierarchyRef_4 = hierarchy.getHierarchyRef();
+                boolean _isDefaultMember_1 = _hierarchyRef_4.isDefaultMember();
+                _and_11 = _isDefaultMember_1;
+              }
+              if (_and_11) {
+                StringConcatenation _builder_21 = new StringConcatenation();
+                _builder_21.append(text, "");
+                _builder_21.append(".Defaultmember");
+                text = _builder_21.toString();
+              } else {
+                CubeHierarchy _hierarchyRef_5 = hierarchy.getHierarchyRef();
+                boolean _isDefaultMember_2 = _hierarchyRef_5.isDefaultMember();
+                if (_isDefaultMember_2) {
+                  StringConcatenation _builder_22 = new StringConcatenation();
+                  _builder_22.append(text, "");
+                  _builder_22.append(".Defaultmember");
+                  text = _builder_22.toString();
+                } else {
+                  StringConcatenation _builder_23 = new StringConcatenation();
+                  _builder_23.append(text, "");
+                  _builder_23.append(".Members");
+                  text = _builder_23.toString();
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    StringConcatenation _builder_24 = new StringConcatenation();
+    _builder_24.append(text, "");
+    return _builder_24.toString();
+  }
+  
+  /**
+   * <p>helper for camel case splitting.</p>
+   */
+  public String splitCamelCase(final String s) {
+    String[] words = s.split("(?<!^)(?=[A-Z])");
+    final String[] _converted_words = (String[])words;
+    return IterableExtensions.join(((Iterable<?>)Conversions.doWrapArray(_converted_words)), " ");
+  }
+  
+  /**
+   * <p>helper for entity names.</p>
+   */
+  public String getEntityAlias(final DatamartEntity entity) {
+    LEntity _entityRef = entity.getEntityRef();
+    return this.getEntityAlias(_entityRef);
+  }
+  
+  /**
+   * <p>helper for entity names including aliases when used in recursive join relations.</p>
+   */
+  public String getEntityAlias(final LEntity entityRef) {
+    String alias = entityRef.getName();
+    String _name = entityRef.getName();
+    boolean _containsKey = this.sqlAliasCounter.containsKey(_name);
+    if (_containsKey) {
+      String _name_1 = entityRef.getName();
+      Integer newId = this.sqlAliasCounter.get(_name_1);
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(alias, "");
+      {
+        if (((newId).intValue() > 0)) {
+          _builder.append(newId, "");
+        }
+      }
+      alias = _builder.toString();
+    }
+    return alias;
+  }
+  
+  /**
+   * <p>helper for entity names including aliases when used in recursive join relations.</p>
+   */
+  public String entityAlias2(final DatamartEntity entity) {
+    LEntity _entityRef = entity.getEntityRef();
+    String alias = _entityRef.getName();
+    LEntity _entityRef_1 = entity.getEntityRef();
+    String _name = _entityRef_1.getName();
+    boolean _containsKey = this.sqlAliasCounter.containsKey(_name);
+    if (_containsKey) {
+      LEntity _entityRef_2 = entity.getEntityRef();
+      String _name_1 = _entityRef_2.getName();
+      Integer newId = this.sqlAliasCounter.get(_name_1);
+      LEntity _entityRef_3 = entity.getEntityRef();
+      String _name_2 = _entityRef_3.getName();
+      this.sqlAliasCounter.put(_name_2, Integer.valueOf(((newId).intValue() + 1)));
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(alias, "");
+      _builder.append(((newId).intValue() + 1), "");
+      alias = _builder.toString();
+    } else {
+      LEntity _entityRef_4 = entity.getEntityRef();
+      String _name_3 = _entityRef_4.getName();
+      this.sqlAliasCounter.put(_name_3, Integer.valueOf(0));
+    }
+    return alias;
+  }
+  
+  /**
+   * <p>main method to build sql statements bases on entities and roles.</p>
+   */
+  public String createSQLStatements(final DatamartDefinition definition, final HashMap<String, LEntityAttribute> typesMap) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("put(\"");
+    _builder.append(IUserAccessService.ADMINISTRATOR, "");
+    _builder.append("\", \"");
+    String _createSQLStatement = this.createSQLStatement(definition, null, typesMap);
+    _builder.append(_createSQLStatement, "");
+    _builder.append("\");");
+    String listTxt = _builder.toString();
+    EList<DatamartRole> _roles = definition.getRoles();
+    for (final DatamartRole role : _roles) {
+      {
+        String stmt = this.createSQLStatement(definition, role, typesMap);
+        boolean _isEmpty = stmt.isEmpty();
+        boolean _not = (!_isEmpty);
+        if (_not) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append(listTxt, "");
+          _builder_1.newLineIfNotEmpty();
+          _builder_1.append("put(\"");
+          Role _assignedRole = role.getAssignedRole();
+          String _name = _assignedRole.getName();
+          _builder_1.append(_name, "");
+          _builder_1.append("\", \"");
+          _builder_1.append(stmt, "");
+          _builder_1.append("\");");
+          listTxt = _builder_1.toString();
+        }
+      }
+    }
+    StringConcatenation _builder_1 = new StringConcatenation();
+    _builder_1.append("{{");
+    _builder_1.newLine();
+    _builder_1.append("\t");
+    _builder_1.append(listTxt, "\t");
+    _builder_1.newLineIfNotEmpty();
+    _builder_1.append("}}");
+    listTxt = _builder_1.toString();
+    return listTxt;
+  }
+  
+  /**
+   * <p>main method to build sql statements bases on entities and a role.</p>
+   */
+  public String createSQLStatement(final DatamartDefinition definition, final DatamartRole role, final HashMap<String, LEntityAttribute> typesMap) {
+    this.sqlAliasCounter.clear();
+    this.sqlFilterMap.clear();
+    this.sqlGrouping.clear();
+    this.entityGrouping.clear();
+    this.ignoreEntityGrouping = false;
+    this.sqlHasAggregate = false;
+    this.sqlHasOrder = false;
+    this.idMap.clear();
+    HashMap<String, String> properties = CollectionLiterals.<String, String>newHashMap();
+    ArrayList<String> conditions = CollectionLiterals.<String>newArrayList();
+    ArrayList<String> orderings = CollectionLiterals.<String>newArrayList();
+    DatamartSource _source = definition.getSource();
+    DatamartEntity entity = ((DatamartEntity) _source);
+    String used = this.createEntity(entity, null, null, properties, conditions, orderings, role, typesMap);
+    String select = this.createSelect(properties, definition);
+    String condition = this.createCondition(conditions);
+    String ordering = this.createOrdering(orderings);
+    String grouping = this.createGrouping(this.sqlGrouping);
+    boolean _isEmpty = select.isEmpty();
+    if (_isEmpty) {
+      return "";
+    }
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("select ");
+    _builder.append(select, "");
+    _builder.append(" from ");
+    _builder.append(used, "");
+    {
+      int _size = conditions.size();
+      boolean _greaterThan = (_size > 0);
+      if (_greaterThan) {
+        _builder.append(" where ");
+        _builder.append(condition, "");
+      }
+    }
+    {
+      if (this.sqlHasAggregate) {
+        _builder.append(" group by ");
+        _builder.append(grouping, "");
+      }
+    }
+    {
+      if (this.sqlHasOrder) {
+        _builder.append(" order by ");
+        _builder.append(ordering, "");
+      }
+    }
+    return _builder.toString();
+  }
+  
+  /**
+   * <p>sql syntax part for group by.</p>
+   */
+  public String createGrouping(final ArrayList<String> grouping) {
+    String groupingString = "";
+    for (final String groupBy : grouping) {
+      StringConcatenation _builder = new StringConcatenation();
+      {
+        boolean _isEmpty = groupingString.isEmpty();
+        boolean _not = (!_isEmpty);
+        if (_not) {
+          _builder.append(groupingString, "");
+          _builder.append(",");
+        }
+      }
+      _builder.append(groupBy, "");
+      groupingString = _builder.toString();
+    }
+    return groupingString;
+  }
+  
+  /**
+   * <p>sql syntax part for where.</p>
+   */
+  public String createCondition(final ArrayList<String> conditions) {
+    String conditionString = "";
+    for (final String condition : conditions) {
+      StringConcatenation _builder = new StringConcatenation();
+      {
+        boolean _isEmpty = conditionString.isEmpty();
+        boolean _not = (!_isEmpty);
+        if (_not) {
+          _builder.append(conditionString, "");
+          _builder.append(" and ");
+        }
+      }
+      _builder.append("(");
+      _builder.append(condition, "");
+      _builder.append(")");
+      conditionString = _builder.toString();
+    }
+    return conditionString;
+  }
+  
+  /**
+   * <p>sql syntax part for order.</p>
+   */
+  public String createOrdering(final ArrayList<String> orderings) {
+    String orderingString = "";
+    for (final String order : orderings) {
+      {
+        this.sqlHasOrder = true;
+        StringConcatenation _builder = new StringConcatenation();
+        {
+          boolean _isEmpty = orderingString.isEmpty();
+          boolean _not = (!_isEmpty);
+          if (_not) {
+            _builder.append(orderingString, "");
+            _builder.append(",");
+          }
+        }
+        _builder.append(order, "");
+        orderingString = _builder.toString();
+      }
+    }
+    return orderingString;
+  }
+  
+  /**
+   * <p>sql syntax part for select.</p>
+   */
+  public String createSelect(final Map<String, String> properties, final DatamartDefinition definition) {
+    String selectString = "";
+    this.datamartDtoMapper = "new DatamartDtoMapper()";
+    Set<String> _keySet = properties.keySet();
+    for (final String property : _keySet) {
+      StringConcatenation _builder = new StringConcatenation();
+      {
+        boolean _isEmpty = selectString.isEmpty();
+        boolean _not = (!_isEmpty);
+        if (_not) {
+          _builder.append(selectString, "");
+          _builder.append(",");
+        }
+      }
+      _builder.append(property, "");
+      {
+        String _get = properties.get(property);
+        int _length = _get.length();
+        boolean _greaterThan = (_length > 0);
+        if (_greaterThan) {
+          _builder.append(" as \\\"");
+          String _get_1 = properties.get(property);
+          _builder.append(_get_1, "");
+          _builder.append("\\\"");
+        }
+      }
+      selectString = _builder.toString();
+    }
+    boolean _notEquals = (!Objects.equal(definition, null));
+    if (_notEquals) {
+      if ((!this.ignoreEntityGrouping)) {
+        Collection<LEntity> _values = this.entityGrouping.values();
+        for (final LEntity entityRef : _values) {
+          {
+            String entityName = entityRef.getName();
+            String dtoFqn = EntityUtils.getDtoFQNForLEntity(entityRef);
+            LEntityAttribute idAttribute = DatamartDefinitionUtil.getEntityIdAttribute(entityRef);
+            String _entityIdDatatype = DatamartDefinitionUtil.getEntityIdDatatype(entityRef);
+            IDataMart.EType _basicType = this.dtType.getBasicType(_entityIdDatatype);
+            String idDataType = _basicType.toString();
+            String idColumn = DatamartDefinitionUtil.getEntityIdAliasName(entityRef);
+            boolean _notEquals_1 = (!Objects.equal(idAttribute, null));
+            if (_notEquals_1) {
+              StringConcatenation _builder_1 = new StringConcatenation();
+              _builder_1.append(selectString, "");
+              _builder_1.append(",");
+              _builder_1.append(entityName, "");
+              _builder_1.append(".");
+              String _name = idAttribute.getName();
+              _builder_1.append(_name, "");
+              _builder_1.append(" as \\\"");
+              _builder_1.append(idColumn, "");
+              _builder_1.append("\\\"");
+              selectString = _builder_1.toString();
+              this.idMap.put(idColumn, idAttribute);
+              StringConcatenation _builder_2 = new StringConcatenation();
+              _builder_2.append(this.datamartDtoMapper, "");
+              _builder_2.newLineIfNotEmpty();
+              _builder_2.append(".add(\"");
+              _builder_2.append(dtoFqn, "");
+              _builder_2.append("\", \"");
+              String _name_1 = idAttribute.getName();
+              _builder_2.append(_name_1, "");
+              _builder_2.append("\", EType.");
+              _builder_2.append(idDataType, "");
+              _builder_2.append(", \"");
+              _builder_2.append(idColumn, "");
+              _builder_2.append("\")");
+              this.datamartDtoMapper = _builder_2.toString();
+            }
+          }
+        }
+      }
+    }
+    return selectString;
+  }
+  
+  /**
+   * <p>recursive entity relation builder.</p>
+   */
+  public String createEntity(final DatamartEntity entity, final DatamartEntity parent, final DatamartNavigation parentNavigation, final Map<String, String> properties, final List<String> conditions, final List<String> orderings, final DatamartRole role, final HashMap<String, LEntityAttribute> typesMap) {
+    String body = "";
+    boolean _isAuthorized = this.isAuthorized(role, entity);
+    if (_isAuthorized) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append(body, "");
+      LEntity _entityRef = entity.getEntityRef();
+      LEntityPersistenceInfo _persistenceInfo = _entityRef.getPersistenceInfo();
+      String _schemaName = _persistenceInfo.getSchemaName();
+      CharSequence _provideSchemaName = this.getProvideSchemaName(_schemaName);
+      _builder.append(_provideSchemaName, "");
+      LEntity _entityRef_1 = entity.getEntityRef();
+      String _tableName = this._namingExtensions.toTableName(_entityRef_1);
+      _builder.append(_tableName, "");
+      _builder.append(" ");
+      String _entityAlias2 = this.entityAlias2(entity);
+      _builder.append(_entityAlias2, "");
+      body = _builder.toString();
+      boolean _and = false;
+      boolean _notEquals = (!Objects.equal(parent, null));
+      if (!_notEquals) {
+        _and = false;
+      } else {
+        boolean _notEquals_1 = (!Objects.equal(parentNavigation, null));
+        _and = _notEquals_1;
+      }
+      if (_and) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append(" ");
+        _builder_1.append("left join ");
+        _builder_1.append(body, " ");
+        String _createJoin = this.createJoin(entity, parent, parentNavigation);
+        _builder_1.append(_createJoin, " ");
+        body = _builder_1.toString();
+      }
+      EList<DatamartNavigation> _navigations = entity.getNavigations();
+      for (final DatamartNavigation navigation : _navigations) {
+        {
+          if ((navigation instanceof DatamartMember)) {
+            DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
+            DatamartReference _joinRef = ((DatamartMember) navigation).getJoinRef();
+            boolean _isAuthorized_1 = this.isAuthorized(role, _datamartEntity, ((DatamartReference) _joinRef));
+            if (_isAuthorized_1) {
+              StringConcatenation _builder_2 = new StringConcatenation();
+              _builder_2.append(body, "");
+              DatamartEntity _datamartEntity_1 = ((DatamartMember) navigation).getDatamartEntity();
+              String _createEntity = this.createEntity(_datamartEntity_1, entity, navigation, properties, conditions, orderings, role, typesMap);
+              _builder_2.append(_createEntity, "");
+              body = _builder_2.toString();
+            }
+          }
+          if ((navigation instanceof DatamartOwner)) {
+            DatamartEntity _datamartEntity_2 = ((DatamartOwner) navigation).getDatamartEntity();
+            DatamartReference _joinRef_1 = ((DatamartOwner) navigation).getJoinRef();
+            boolean _isAuthorized_2 = this.isAuthorized(role, _datamartEntity_2, ((DatamartReference) _joinRef_1));
+            if (_isAuthorized_2) {
+              StringConcatenation _builder_3 = new StringConcatenation();
+              _builder_3.append(body, "");
+              DatamartEntity _datamartEntity_3 = ((DatamartOwner) navigation).getDatamartEntity();
+              String _createEntity_1 = this.createEntity(_datamartEntity_3, entity, navigation, properties, conditions, orderings, role, typesMap);
+              _builder_3.append(_createEntity_1, "");
+              body = _builder_3.toString();
+            }
+          }
+        }
+      }
+      EList<DatamartProperty> _properties = entity.getProperties();
+      boolean _isEmpty = _properties.isEmpty();
+      if (_isEmpty) {
+        LEntity _entityRef_2 = entity.getEntityRef();
+        List<LEntityAttribute> _allAttributes = _entityRef_2.getAllAttributes();
+        for (final LEntityAttribute attr : _allAttributes) {
+          boolean _and_1 = false;
+          boolean _isId = attr.isId();
+          boolean _not = (!_isId);
+          if (!_not) {
+            _and_1 = false;
+          } else {
+            boolean _isUuid = attr.isUuid();
+            boolean _not_1 = (!_isUuid);
+            _and_1 = _not_1;
+          }
+          if (_and_1) {
+            LEntity _entityRef_3 = entity.getEntityRef();
+            this.recurProperty(_entityRef_3, attr, false, "", properties, role, typesMap);
+          }
+        }
+      } else {
+        EList<DatamartProperty> _properties_1 = entity.getProperties();
+        for (final DatamartProperty property : _properties_1) {
+          LEntity _entityRef_4 = entity.getEntityRef();
+          LEntityAttribute _propertyRef = property.getPropertyRef();
+          boolean _isAggregated = property.isAggregated();
+          SqlAggregationEnum _aggregate = property.getAggregate();
+          String _name = _aggregate.getName();
+          this.recurProperty(_entityRef_4, _propertyRef, _isAggregated, _name, properties, role, typesMap);
+        }
+      }
+      EList<DatamartCondition> _conditions = entity.getConditions();
+      for (final DatamartCondition condition : _conditions) {
+        Expression _condition = condition.getCondition();
+        String _evaluateExpression = this.evaluateExpression(_condition, entity);
+        conditions.add(_evaluateExpression);
+      }
+      EList<DatamartOrder> _ordering = entity.getOrdering();
+      for (final DatamartOrder order : _ordering) {
+        String _entityAlias = this.getEntityAlias(entity);
+        String _plus = (_entityAlias + ".");
+        LEntityAttribute _orderBy = order.getOrderBy();
+        String _columnName = this._namingExtensions.toColumnName(_orderBy);
+        String _plus_1 = (_plus + _columnName);
+        String _plus_2 = (_plus_1 + " ");
+        OrderEnum _orderHow = order.getOrderHow();
+        String _name_1 = _orderHow.getName();
+        String _plus_3 = (_plus_2 + _name_1);
+        orderings.add(_plus_3);
+      }
+    }
+    return body;
+  }
+  
+  public void recurProperty(final LEntity entity, final LAttribute attr, final boolean aggregated, final String aggregateName, final Map<String, String> properties, final DatamartRole role, final HashMap<String, LEntityAttribute> typesMap) {
+    LScalarType type = attr.getType();
+    if ((type instanceof LBean)) {
+      LBean bean = ((LBean) type);
+      List<LBeanAttribute> _allAttributes = bean.getAllAttributes();
+      for (final LBeanAttribute battr : _allAttributes) {
+        LScalarType _type = battr.getType();
+        if ((_type instanceof LBean)) {
+          this.recurProperty(entity, battr, aggregated, aggregateName, properties, role, typesMap);
+        } else {
+          this.addProperty(entity, attr, aggregated, aggregateName, properties, role, typesMap);
+        }
+      }
+    } else {
+      this.addProperty(entity, attr, aggregated, aggregateName, properties, role, typesMap);
+    }
+  }
+  
+  public void addProperty(final LEntity entity, final LAttribute attr, final boolean aggregated, final String aggregateName, final Map<String, String> properties, final DatamartRole role, final HashMap<String, LEntityAttribute> typesMap) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _entityAlias = this.getEntityAlias(entity);
+    _builder.append(_entityAlias, "");
+    _builder.append(".");
+    String _columnName = this._namingExtensions.toColumnName(attr);
+    _builder.append(_columnName, "");
+    String key = _builder.toString();
+    String _name = entity.getName();
+    String _plus = (_name + ".");
+    String _columnName_1 = this._namingExtensions.toColumnName(attr);
+    String _lowerCase = _columnName_1.toLowerCase();
+    String _plus_1 = (_plus + _lowerCase);
+    typesMap.put(_plus_1, ((LEntityAttribute) attr));
+    String _name_1 = attr.getName();
+    boolean _isAuthorized = this.isAuthorized(role, entity, _name_1);
+    if (_isAuthorized) {
+      if (aggregated) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append(aggregateName, "");
+        _builder_1.append("(");
+        _builder_1.append(key, "");
+        _builder_1.append(")");
+        key = _builder_1.toString();
+        this.sqlHasAggregate = true;
+        String _string = key.toString();
+        StringConcatenation _builder_2 = new StringConcatenation();
+        String _name_2 = attr.getName();
+        _builder_2.append(_name_2, "");
+        properties.put(_string, _builder_2.toString());
+        this.ignoreEntityGrouping = true;
+      } else {
+        String _entityAlias_1 = this.getEntityAlias(entity);
+        this.entityGrouping.put(_entityAlias_1, entity);
+        String _string_1 = key.toString();
+        this.sqlGrouping.add(_string_1);
+        String _string_2 = key.toString();
+        StringConcatenation _builder_3 = new StringConcatenation();
+        String _name_3 = attr.getName();
+        _builder_3.append(_name_3, "");
+        properties.put(_string_2, _builder_3.toString());
+      }
+    }
+  }
+  
+  public boolean isAuthorized(final DatamartRole role, final DatamartEntity entity) {
+    boolean _equals = Objects.equal(role, null);
+    if (_equals) {
+      return true;
+    }
+    Role _assignedRole = role.getAssignedRole();
+    EList<RoleElement> _roleElements = _assignedRole.getRoleElements();
+    for (final RoleElement roleElement : _roleElements) {
+      if ((roleElement instanceof RoleEntity)) {
+        LEntity _entityRef = entity.getEntityRef();
+        String _name = _entityRef.getName();
+        LEntity _entityRef_1 = ((RoleEntity) roleElement).getEntityRef();
+        String _name_1 = ((LEntity) _entityRef_1).getName();
+        boolean _equals_1 = _name.equals(_name_1);
+        if (_equals_1) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  public boolean isAuthorized(final DatamartRole role, final LEntity entity, final String propertyName) {
+    boolean _equals = Objects.equal(role, null);
+    if (_equals) {
+      return true;
+    }
+    Role _assignedRole = role.getAssignedRole();
+    EList<RoleElement> _roleElements = _assignedRole.getRoleElements();
+    for (final RoleElement roleElement : _roleElements) {
+      if ((roleElement instanceof RoleEntity)) {
+        String _name = entity.getName();
+        LEntity _entityRef = ((RoleEntity) roleElement).getEntityRef();
+        String _name_1 = ((LEntity) _entityRef).getName();
+        boolean _equals_1 = _name.equals(_name_1);
+        if (_equals_1) {
+          EList<RoleEntityFeature> _entityFeatures = ((RoleEntity) roleElement).getEntityFeatures();
+          for (final RoleEntityFeature feature : _entityFeatures) {
+            LEntityFeature _entityAttriCol = feature.getEntityAttriCol();
+            String _name_2 = ((LEntityFeature) _entityAttriCol).getName();
+            boolean _equals_2 = propertyName.equals(_name_2);
+            if (_equals_2) {
+              if ((feature instanceof RoleEntityAttribute)) {
+                RolePropertyEnum _entityAttriUnauthorized = ((RoleEntityAttribute)feature).getEntityAttriUnauthorized();
+                String _literal = _entityAttriUnauthorized.getLiteral();
+                boolean _equals_3 = "invisible".equals(_literal);
+                if (_equals_3) {
+                  return false;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    return true;
+  }
+  
+  public boolean isAuthorized(final DatamartRole role, final String entityAttribute) {
+    boolean _equals = Objects.equal(role, null);
+    if (_equals) {
+      return true;
+    }
+    Role _assignedRole = role.getAssignedRole();
+    EList<RoleElement> _roleElements = _assignedRole.getRoleElements();
+    for (final RoleElement roleElement : _roleElements) {
+      if ((roleElement instanceof RoleEntity)) {
+        String[] parts = entityAttribute.split("\\.");
+        String _get = parts[0];
+        LEntity _entityRef = ((RoleEntity) roleElement).getEntityRef();
+        String _name = ((LEntity) _entityRef).getName();
+        boolean _equals_1 = _get.equals(_name);
+        if (_equals_1) {
+          EList<RoleEntityFeature> _entityFeatures = ((RoleEntity) roleElement).getEntityFeatures();
+          for (final RoleEntityFeature feature : _entityFeatures) {
+            String _get_1 = parts[1];
+            LEntityFeature _entityAttriCol = feature.getEntityAttriCol();
+            String _name_1 = ((LEntityFeature) _entityAttriCol).getName();
+            boolean _equals_2 = _get_1.equals(_name_1);
+            if (_equals_2) {
+              if ((feature instanceof RoleEntityAttribute)) {
+                RolePropertyEnum _entityAttriUnauthorized = ((RoleEntityAttribute)feature).getEntityAttriUnauthorized();
+                String _literal = _entityAttriUnauthorized.getLiteral();
+                boolean _equals_3 = "invisible".equals(_literal);
+                if (_equals_3) {
+                  return false;
+                }
+              }
+            }
+          }
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  public boolean isAuthorized(final DatamartRole role, final DatamartEntity entity, final DatamartReference link) {
+    boolean _equals = Objects.equal(role, null);
+    if (_equals) {
+      return true;
+    }
+    Role _assignedRole = role.getAssignedRole();
+    EList<RoleElement> _roleElements = _assignedRole.getRoleElements();
+    for (final RoleElement roleElement : _roleElements) {
+      if ((roleElement instanceof RoleEntity)) {
+        LEntity _entityRef = entity.getEntityRef();
+        String _name = _entityRef.getName();
+        LEntity _entityRef_1 = ((RoleEntity) roleElement).getEntityRef();
+        String _name_1 = ((LEntity) _entityRef_1).getName();
+        boolean _equals_1 = _name.equals(_name_1);
+        if (_equals_1) {
+          EList<RoleEntityFeature> _entityFeatures = ((RoleEntity) roleElement).getEntityFeatures();
+          for (final RoleEntityFeature feature : _entityFeatures) {
+            if ((feature instanceof RoleEntityReference)) {
+              LEntityReference _ref = link.getRef();
+              String _name_2 = _ref.getName();
+              String _lowerCase = _name_2.toLowerCase();
+              LEntityFeature _entityAttriCol = ((RoleEntityReference)feature).getEntityAttriCol();
+              String _name_3 = ((LEntityFeature) _entityAttriCol).getName();
+              boolean _equals_2 = _lowerCase.equals(_name_3);
+              if (_equals_2) {
+                String _literal = RolePropertyEnum.INVISIBLE.getLiteral();
+                RolePropertyEnum _entityAttriUnauthorized = ((RoleEntityReference)feature).getEntityAttriUnauthorized();
+                String _literal_1 = _entityAttriUnauthorized.getLiteral();
+                boolean _equals_3 = _literal.equals(_literal_1);
+                if (_equals_3) {
+                  return false;
+                }
+              }
+            }
+          }
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  public CharSequence getProvideSchemaName(final String schemaName) {
+    StringConcatenation _builder = new StringConcatenation();
+    {
+      boolean _and = false;
+      boolean _notEquals = (!Objects.equal(schemaName, null));
+      if (!_notEquals) {
+        _and = false;
+      } else {
+        int _length = schemaName.length();
+        boolean _greaterThan = (_length > 0);
+        _and = _greaterThan;
+      }
+      if (_and) {
+        _builder.append(schemaName, "");
+        _builder.append(".");
+      }
+    }
+    return _builder;
+  }
+  
+  /**
+   * <p>sql syntax part for joined relations.</p>
+   */
+  public String createJoin(final DatamartEntity entity, final DatamartEntity parent, final DatamartNavigation navigation) {
+    String _xblockexpression = null;
+    {
+      String join = "";
+      DatamartReference joinRef = navigation.getJoinRef();
+      String _xifexpression = null;
+      if ((joinRef instanceof DatamartReference)) {
+        String _xblockexpression_1 = null;
+        {
+          LEntityReference _ref = joinRef.getRef();
+          String name = _ref.getName();
+          if ((navigation instanceof DatamartMember)) {
+            DatamartEntity _datamartEntity = ((DatamartMember)navigation).getDatamartEntity();
+            LEntity _entityRef = _datamartEntity.getEntityRef();
+            List<LEntityReference> refs = _entityRef.getAllReferences();
+            for (final LEntityReference ref : refs) {
+              boolean _and = false;
+              LEntity _type = ref.getType();
+              boolean _notEquals = (!Objects.equal(_type, null));
+              if (!_notEquals) {
+                _and = false;
+              } else {
+                LEntity _type_1 = ref.getType();
+                LEntity _entityRef_1 = parent.getEntityRef();
+                boolean _equals = _type_1.equals(_entityRef_1);
+                _and = _equals;
+              }
+              if (_and) {
+                String _name = ref.getName();
+                name = _name;
+              }
+            }
+            StringConcatenation _builder = new StringConcatenation();
+            String _entityAlias = this.getEntityAlias(entity);
+            _builder.append(_entityAlias, "");
+            _builder.append(".");
+            _builder.append(name, "");
+            _builder.append("_id=");
+            String _entityAlias_1 = this.getEntityAlias(parent);
+            _builder.append(_entityAlias_1, "");
+            _builder.append(".id");
+            join = _builder.toString();
+          } else {
+            if ((navigation instanceof DatamartOwner)) {
+              StringConcatenation _builder_1 = new StringConcatenation();
+              String _entityAlias_2 = this.getEntityAlias(entity);
+              _builder_1.append(_entityAlias_2, "");
+              _builder_1.append(".id=");
+              String _entityAlias_3 = this.getEntityAlias(parent);
+              _builder_1.append(_entityAlias_3, "");
+              _builder_1.append(".");
+              _builder_1.append(name, "");
+              _builder_1.append("_id");
+              join = _builder_1.toString();
+            }
+          }
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append(" ");
+          _builder_2.append("on(");
+          _builder_2.append(join, " ");
+          _builder_2.append(")");
+          _xblockexpression_1 = join = _builder_2.toString();
+        }
+        _xifexpression = _xblockexpression_1;
+      }
+      _xblockexpression = _xifexpression;
+    }
+    return _xblockexpression;
+  }
+  
+  /**
+   * get a set of entities used by the datamart
+   */
+  public Set<LEntity> findAllEntities(final DatamartDefinition datamart) {
+    HashSet<LEntity> entities = new HashSet<LEntity>();
+    DatamartSource _source = datamart.getSource();
+    boolean _matched = false;
+    if (!_matched) {
+      if (_source instanceof DatamartEntity) {
+        _matched=true;
+        DatamartSource _source_1 = datamart.getSource();
+        this.findAllEntites(((DatamartEntity) _source_1), entities);
+      }
+    }
+    return entities;
+  }
+  
+  /**
+   * add all entities used by the datamart entity into the given set of entities
+   */
+  public void findAllEntites(final DatamartEntity datamartEntity, final Set<LEntity> entities) {
+    LEntity _entityRef = datamartEntity.getEntityRef();
+    entities.add(_entityRef);
+    EList<DatamartNavigation> _navigations = datamartEntity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      DatamartEntity _datamartEntity = navigation.getDatamartEntity();
+      this.findAllEntites(_datamartEntity, entities);
+    }
+  }
+  
+  public void infer(final EObject datamart, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    if (datamart instanceof DatamartPackage) {
+      _infer((DatamartPackage)datamart, acceptor, isPreIndexingPhase);
+      return;
+    } else if (datamart != null) {
+      _infer(datamart, acceptor, isPreIndexingPhase);
+      return;
+    } else {
+      throw new IllegalArgumentException("Unhandled parameter types: " +
+        Arrays.<Object>asList(datamart, acceptor, isPreIndexingPhase).toString());
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartModelGenerator.java b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartModelGenerator.java
new file mode 100644
index 0000000..a23b004
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/jvmmodel/DatamartModelGenerator.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.jvmmodel;
+
+import com.vaadin.ui.Notification;
+import java.math.BigDecimal;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import javax.inject.Inject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.persistence.IPersistenceService;
+import org.eclipse.osbp.preferences.ProductConfiguration;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.eclipse.osbp.ui.api.datamart.DerivedOlapException;
+import org.eclipse.osbp.ui.api.datamart.IDataMart;
+import org.eclipse.osbp.ui.api.datamart.IDualData;
+import org.eclipse.osbp.ui.api.useraccess.IPermissionList;
+import org.eclipse.osbp.user.User;
+import org.eclipse.osbp.utils.fillertext.FillerTextProvider;
+import org.eclipse.osbp.utils.vaadin.SimpleDateFormatter;
+import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
+import org.eclipse.osbp.xtext.datamart.common.DatamartData;
+import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedAxis;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedMember;
+import org.eclipse.osbp.xtext.datamart.common.olap.DerivedPosition;
+import org.eclipse.osbp.xtext.datamart.common.sql.FillerTextResultSet;
+import org.eclipse.osbp.xtext.datamart.common.sql.FillerTextResultSetMetaData;
+import org.eclipse.osbp.xtext.datamart.common.sql.SqlCellSet;
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
+import org.eclipse.xtext.xbase.compiler.ImportManager;
+import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.jbpm.task.query.TaskSummary;
+import org.olap4j.Axis;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+
+@SuppressWarnings("all")
+public class DatamartModelGenerator extends I18NModelGenerator {
+  @Inject
+  @Extension
+  private BasicDslGeneratorUtils _basicDslGeneratorUtils;
+  
+  public String bindPersistenceMethod = "bindPersistenceService";
+  
+  public String unbindPersistenceMethod = "unbindPersistenceService";
+  
+  public String bindBPMMethod = "bindBPMEngine";
+  
+  public String unbindBPMMethod = "unbindBPMEngine";
+  
+  public String bindUserAccessMethod = "bindUserAccessService";
+  
+  public String unbindUserAccessMethod = "unbindUserAccessService";
+  
+  public String bindDSLMetadataService = "bindDSLMetadataService";
+  
+  public String unbindDSLMetadataService = "unbindDSLMetadataService";
+  
+  public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
+    this.addTranslatables("Groups,Users");
+    super.doGenerate(input, fsa);
+  }
+  
+  public TreeAppendable createAppendable(final EObject context, final ImportManager importManager, final GeneratorConfig config) {
+    TreeAppendable _xblockexpression = null;
+    {
+      Resource _eResource = context.eResource();
+      this.setBuilder(_eResource);
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, DriverManager.class, SQLException.class, List.class, DerivedAxis.class, DerivedPosition.class, DerivedMember.class, ResultSet.class, SqlCellSet.class, DerivedOlapException.class, Axis.class, IPersistenceService.class, ProductConfiguration.class, IPermissionList.class, IDataMart.EType.class, IDualData.class, SimpleDateFormatter.class, DatamartData.class, ReferenceCardinality.class, ReferencePolicy.class, User.class, IDto.class, DatamartDtoMapper.class, TaskSummary.class, Notification.class, BigDecimal.class, Timestamp.class, FillerTextProvider.class, FillerTextResultSet.class, FillerTextResultSetMetaData.class, ResourceBundle.class, Locale.class, ITranslator.class);
+      _xblockexpression = super.createAppendable(context, importManager, config);
+    }
+    return _xblockexpression;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/scoping/DatamartDSLScopeProvider.java b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/scoping/DatamartDSLScopeProvider.java
new file mode 100644
index 0000000..b765157
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/scoping/DatamartDSLScopeProvider.java
@@ -0,0 +1,402 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.scoping;
+
+import com.google.common.base.Objects;
+import java.util.ArrayList;
+import java.util.List;
+import javax.inject.Inject;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+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.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.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+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;
+import org.eclipse.xtext.xbase.lib.Extension;
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * on how and when to use it
+ */
+@SuppressWarnings("all")
+public class DatamartDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+  @Inject
+  @Extension
+  private ModelExtensions _modelExtensions;
+  
+  @Override
+  public IScope getScope(final EObject context, final EReference reference) {
+    boolean _equals = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_HIERARCHY__HIERARCHY_REF);
+    if (_equals) {
+      return this.getDatamartHierarchy_hierarchyRef(context);
+    } else {
+      boolean _equals_1 = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_MEASURE__MEASURE_REF);
+      if (_equals_1) {
+        return this.getDatamartMeasure_measureRef(context);
+      } else {
+        boolean _equals_2 = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_HIERARCHY__LEVEL_REF);
+        if (_equals_2) {
+          return this.getDatamartHierarchy_levelRef(context);
+        } else {
+          boolean _equals_3 = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_HIERARCHY__EXCEPT_REF);
+          if (_equals_3) {
+            return this.getDatamartHierarchy_levelRef(context);
+          } else {
+            boolean _equals_4 = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_HIERARCHY__ORDER_REF);
+            if (_equals_4) {
+              return this.getDatamartMeasure_measureRef(context);
+            } else {
+              boolean _equals_5 = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_PROPERTY__PROPERTY_REF);
+              if (_equals_5) {
+                return this.getDatamartProperty_propertyRef(context);
+              } else {
+                boolean _equals_6 = Objects.equal(reference, DatamartDSLPackage.Literals.PROPERTY_FILLER_DATA__PROPERTY_REF);
+                if (_equals_6) {
+                  return this.getFillerData_propertyRef(context);
+                } else {
+                  boolean _equals_7 = Objects.equal(reference, DatamartDSLPackage.Literals.DATAMART_REFERENCE__REF);
+                  if (_equals_7) {
+                    return this.getDatamartEntity_datamartReferenceRef(context, reference);
+                  } else {
+                    final IScope scope = super.getScope(context, reference);
+                    return scope;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public IScope getFillerData_propertyRef(final EObject context) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObj = context.eContainer();
+    while (((!Objects.equal(eObj, null)) && (!(eObj instanceof DatamartDefinition)))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      DatamartSource _source = ((DatamartDefinition) eObj).getSource();
+      if ((_source instanceof DatamartEntity)) {
+        DatamartSource _source_1 = ((DatamartDefinition) eObj).getSource();
+        DatamartEntity entity = ((DatamartEntity) _source_1);
+        this.iterateEntity(entity, result);
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public void iterateEntity(final DatamartEntity entity, final ArrayList<EObject> result) {
+    EList<DatamartProperty> _properties = entity.getProperties();
+    for (final DatamartProperty prop : _properties) {
+      LEntityAttribute _propertyRef = prop.getPropertyRef();
+      result.add(_propertyRef);
+    }
+    EList<DatamartNavigation> _navigations = entity.getNavigations();
+    for (final DatamartNavigation navigation : _navigations) {
+      boolean _matched = false;
+      if (!_matched) {
+        if (navigation instanceof DatamartMember) {
+          _matched=true;
+          DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
+          this.iterateEntity(_datamartEntity, result);
+        }
+      }
+      if (!_matched) {
+        if (navigation instanceof DatamartOwner) {
+          _matched=true;
+          DatamartEntity _datamartEntity = ((DatamartOwner) navigation).getDatamartEntity();
+          this.iterateEntity(_datamartEntity, result);
+        }
+      }
+    }
+  }
+  
+  /**
+   * @param context
+   * @return LEntity
+   */
+  public LEntity getDatamartEntity(final EObject context) {
+    EObject eObj = context.eContainer();
+    while (((!Objects.equal(eObj, null)) && (!(eObj instanceof DatamartEntity)))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      return ((DatamartEntity) eObj).getEntityRef();
+    } else {
+      return null;
+    }
+  }
+  
+  /**
+   * @param context
+   * @return
+   */
+  public IScope getDatamartProperty_propertyRef(final EObject context) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    LEntity entity = this.getDatamartEntity(context);
+    boolean _notEquals = (!Objects.equal(entity, null));
+    if (_notEquals) {
+      List<LEntityAttribute> _allAttributes = entity.getAllAttributes();
+      for (final LEntityAttribute attr : _allAttributes) {
+        String _name = attr.getName();
+        boolean _notEquals_1 = (!Objects.equal(_name, null));
+        if (_notEquals_1) {
+          result.add(attr);
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getDatamartEntity_datamartReferenceRef(final EObject context, final EReference reference) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObj = ((DatamartReference) context).eContainer();
+    while ((!(eObj instanceof DatamartEntity))) {
+      {
+        EObject _eContainer = eObj.eContainer();
+        eObj = _eContainer;
+        boolean _equals = Objects.equal(eObj, null);
+        if (_equals) {
+          return Scopes.scopeFor(result);
+        }
+      }
+    }
+    if ((eObj instanceof DatamartEntity)) {
+      LEntity _entityRef = ((DatamartEntity) eObj).getEntityRef();
+      List<LEntityReference> _allReferences = _entityRef.getAllReferences();
+      for (final LEntityReference ref : _allReferences) {
+        EObject _eContainer = ((DatamartReference) context).eContainer();
+        if ((_eContainer instanceof DatamartOwner)) {
+          boolean _isToMany = this._modelExtensions.isToMany(((LEntityFeature) ref));
+          boolean _not = (!_isToMany);
+          if (_not) {
+            result.add(ref);
+          }
+        } else {
+          boolean _isToMany_1 = this._modelExtensions.isToMany(((LEntityFeature) ref));
+          if (_isToMany_1) {
+            result.add(ref);
+          }
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getDatamartHierarchy_hierarchyRef(final EObject context) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObj = context.eContainer();
+    while ((!(eObj instanceof DatamartDefinition))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      if ((eObj instanceof DatamartDefinition)) {
+        DatamartSource _source = ((DatamartDefinition) eObj).getSource();
+        boolean _notEquals_1 = (!Objects.equal(_source, null));
+        if (_notEquals_1) {
+          DatamartSource datamartSource = ((DatamartDefinition)eObj).getSource();
+          if ((datamartSource instanceof DatamartCube)) {
+            CubeType _cubeRef = ((DatamartCube)datamartSource).getCubeRef();
+            boolean _notEquals_2 = (!Objects.equal(_cubeRef, null));
+            if (_notEquals_2) {
+              CubeType cube = ((DatamartCube)datamartSource).getCubeRef();
+              boolean _notEquals_3 = (!Objects.equal(cube, null));
+              if (_notEquals_3) {
+                CubeTypeEntity _cubeTypeEntity = cube.getCubeTypeEntity();
+                boolean _notEquals_4 = (!Objects.equal(_cubeTypeEntity, null));
+                if (_notEquals_4) {
+                  BasicEList<CubeHierarchy> hierList = new BasicEList<CubeHierarchy>();
+                  CubeTypeEntity _cubeTypeEntity_1 = cube.getCubeTypeEntity();
+                  EList<CubeDimensionUsage> dimList = _cubeTypeEntity_1.getDimensionUsages();
+                  for (final CubeDimensionUsage ccCubeDimensionUsage : dimList) {
+                    CubeDimension _sourceValue = ccCubeDimensionUsage.getSourceValue();
+                    EList<CubeHierarchy> _hierarchies = _sourceValue.getHierarchies();
+                    hierList.addAll(_hierarchies);
+                  }
+                  ArrayList<EObject> _hierarchyList = this.getHierarchyList(hierList, result);
+                  result = _hierarchyList;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getDatamartHierarchy_levelRef(final EObject eObj) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObjLocal = eObj;
+    while ((!(eObjLocal instanceof DatamartHierarchy))) {
+      EObject _eContainer = eObjLocal.eContainer();
+      eObjLocal = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObjLocal, null));
+    if (_notEquals) {
+      if ((eObjLocal instanceof DatamartHierarchy)) {
+        CubeHierarchy hierarchy = ((DatamartHierarchy)eObjLocal).getHierarchyRef();
+        boolean _notEquals_1 = (!Objects.equal(hierarchy, null));
+        if (_notEquals_1) {
+          if ((hierarchy instanceof CubeHierarchy)) {
+            CubeDimensionEntity entity = hierarchy.getCubeDimEntity();
+            boolean _notEquals_2 = (!Objects.equal(entity, null));
+            if (_notEquals_2) {
+              EList<CubeLevel> _hierarchLevels = entity.getHierarchLevels();
+              for (final CubeLevel ccCubeLevel : _hierarchLevels) {
+                String _name = ccCubeLevel.getName();
+                boolean _notEquals_3 = (!Objects.equal(_name, null));
+                if (_notEquals_3) {
+                  result.add(ccCubeLevel);
+                }
+              }
+              CubeDimensionEntityEntity _dimEntity = entity.getDimEntity();
+              boolean _notEquals_4 = (!Objects.equal(_dimEntity, null));
+              if (_notEquals_4) {
+                CubeDimensionEntityEntity _dimEntity_1 = entity.getDimEntity();
+                this.recurseLevels(_dimEntity_1, result);
+              }
+            }
+          }
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public void recurseLevels(final CubeDimensionEntityEntity dimEntity, final ArrayList<EObject> result) {
+    boolean _notEquals = (!Objects.equal(dimEntity, null));
+    if (_notEquals) {
+      EList<CubeLevel> _hierarchLevels = dimEntity.getHierarchLevels();
+      for (final CubeLevel ccCubeLevel : _hierarchLevels) {
+        String _name = ccCubeLevel.getName();
+        boolean _notEquals_1 = (!Objects.equal(_name, null));
+        if (_notEquals_1) {
+          result.add(ccCubeLevel);
+        }
+      }
+      CubeDimensionEntityEntity _dimEntity = dimEntity.getDimEntity();
+      this.recurseLevels(_dimEntity, result);
+    }
+  }
+  
+  public IScope getDatamartMeasure_measureRef(final EObject eObj) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObjLocal = eObj.eContainer();
+    while ((!(eObjLocal instanceof DatamartDefinition))) {
+      EObject _eContainer = eObjLocal.eContainer();
+      eObjLocal = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObjLocal, null));
+    if (_notEquals) {
+      if ((eObjLocal instanceof DatamartDefinition)) {
+        DatamartSource _source = ((DatamartDefinition)eObjLocal).getSource();
+        boolean _notEquals_1 = (!Objects.equal(_source, null));
+        if (_notEquals_1) {
+          DatamartSource datamartSource = ((DatamartDefinition)eObjLocal).getSource();
+          if ((datamartSource instanceof DatamartCube)) {
+            CubeType _cubeRef = ((DatamartCube)datamartSource).getCubeRef();
+            boolean _notEquals_2 = (!Objects.equal(_cubeRef, null));
+            if (_notEquals_2) {
+              CubeType cube = ((DatamartCube)datamartSource).getCubeRef();
+              boolean _notEquals_3 = (!Objects.equal(cube, null));
+              if (_notEquals_3) {
+                if ((cube instanceof CubeType)) {
+                  CubeTypeEntity _cubeTypeEntity = cube.getCubeTypeEntity();
+                  boolean _notEquals_4 = (!Objects.equal(_cubeTypeEntity, null));
+                  if (_notEquals_4) {
+                    CubeTypeEntity _cubeTypeEntity_1 = cube.getCubeTypeEntity();
+                    EList<CubeMeasure> _measures = _cubeTypeEntity_1.getMeasures();
+                    for (final CubeMeasure ccCubeMeasure : _measures) {
+                      String _name = ccCubeMeasure.getName();
+                      boolean _notEquals_5 = (!Objects.equal(_name, null));
+                      if (_notEquals_5) {
+                        result.add(ccCubeMeasure);
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public ArrayList<EObject> getHierarchyList(final EList<CubeHierarchy> hierList, final ArrayList<EObject> result) {
+    for (final CubeHierarchy ccCubeHierarchy : hierList) {
+      {
+        String name = ccCubeHierarchy.getName();
+        boolean _or = false;
+        boolean _equals = Objects.equal(name, null);
+        if (_equals) {
+          _or = true;
+        } else {
+          int _length = name.length();
+          boolean _equals_1 = (_length == 0);
+          _or = _equals_1;
+        }
+        if (_or) {
+          EObject eObj = ccCubeHierarchy.eContainer();
+          while ((!(eObj instanceof CubeDimension))) {
+            EObject _eContainer = eObj.eContainer();
+            eObj = _eContainer;
+          }
+          String _name = ((CubeDimension) eObj).getName();
+          name = _name;
+          ccCubeHierarchy.setName(name);
+        }
+        result.add(ccCubeHierarchy);
+      }
+    }
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/util/EventBrokerDatamartUtils.java b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/util/EventBrokerDatamartUtils.java
new file mode 100644
index 0000000..d9b35b6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/util/EventBrokerDatamartUtils.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.util;
+
+import com.google.common.base.Objects;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import javax.inject.Inject;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart;
+import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.Extension;
+
+@SuppressWarnings("all")
+public class EventBrokerDatamartUtils {
+  @Inject
+  @Extension
+  private DatamartDSLJvmModelInferrer datamartInferrer;
+  
+  public HashMap<String, String> getUsedFilterInDatamart(final EventBrokerDataMart datamart, final HashMap<String, String> filterIdMap) {
+    HashMap<String, String> usedFilterIdMap = CollectionLiterals.<String, String>newHashMap();
+    Set<Map.Entry<String, String>> _entrySet = filterIdMap.entrySet();
+    for (final Map.Entry<String, String> filter : _entrySet) {
+      String _filter = datamart.getFilter();
+      String _value = filter.getValue();
+      boolean _equals = _filter.equals(_value);
+      if (_equals) {
+        String _key = filter.getKey();
+        String _value_1 = filter.getValue();
+        usedFilterIdMap.put(_key, _value_1);
+      }
+    }
+    return usedFilterIdMap;
+  }
+  
+  public HashMap<String, String> getFilterMap(final EventBrokerDataMart datamart) {
+    HashMap<String, String> filterIdMap = new HashMap<String, String>();
+    DatamartDefinition _datamartDef = datamart.getDatamartDef();
+    this.datamartInferrer.createFilterMap(_datamartDef, filterIdMap);
+    return filterIdMap;
+  }
+  
+  public void removeAlreadyUsedFilter(final EList<EventBrokerDataMart> datamarts, final HashMap<String, HashMap<String, String>> datamartsFilterMap) {
+    for (final EventBrokerDataMart dat : datamarts) {
+      String _filter = dat.getFilter();
+      boolean _notEquals = (!Objects.equal(_filter, null));
+      if (_notEquals) {
+        DatamartDefinition _datamartDef = dat.getDatamartDef();
+        String _name = _datamartDef.getName();
+        HashMap<String, String> _get = datamartsFilterMap.get(_name);
+        HashMap<String, String> filterIdMap = ((HashMap<String, String>) _get);
+        boolean _notEquals_1 = (!Objects.equal(filterIdMap, null));
+        if (_notEquals_1) {
+          Object _clone = filterIdMap.clone();
+          HashMap<String, String> filterIdMapTemp = ((HashMap<String, String>) _clone);
+          Set<Map.Entry<String, String>> _entrySet = filterIdMapTemp.entrySet();
+          for (final Map.Entry<String, String> filter : _entrySet) {
+            String _filter_1 = dat.getFilter();
+            String _value = filter.getValue();
+            boolean _equals = _filter_1.equals(_value);
+            if (_equals) {
+              String _key = filter.getKey();
+              filterIdMap.remove(_key);
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public HashMap<String, String> getFilterMap(final EList<EventBrokerDataMart> datamarts) {
+    HashMap<String, String> filterMap = CollectionLiterals.<String, String>newHashMap();
+    return this.getFilterMap(datamarts, filterMap);
+  }
+  
+  public HashMap<String, String> getFilterMap(final EList<EventBrokerDataMart> datamarts, final HashMap<String, String> filterMap) {
+    boolean _notEquals = (!Objects.equal(filterMap, null));
+    if (_notEquals) {
+      for (final EventBrokerDataMart datamart : datamarts) {
+        HashMap<String, String> _filterMap = this.getFilterMap(datamart);
+        HashMap<String, String> _usedFilterInDatamart = this.getUsedFilterInDatamart(datamart, _filterMap);
+        filterMap.putAll(_usedFilterInDatamart);
+      }
+    }
+    return filterMap;
+  }
+  
+  public HashMap<String, HashMap<String, String>> getUsedFilterMap(final EList<EventBrokerDataMart> datamarts) {
+    HashMap<String, HashMap<String, String>> usedFilterMap = CollectionLiterals.<String, HashMap<String, String>>newHashMap();
+    for (final EventBrokerDataMart dat : datamarts) {
+      boolean _and = false;
+      boolean _notEquals = (!Objects.equal(dat, null));
+      if (!_notEquals) {
+        _and = false;
+      } else {
+        DatamartDefinition _datamartDef = dat.getDatamartDef();
+        boolean _notEquals_1 = (!Objects.equal(_datamartDef, null));
+        _and = _notEquals_1;
+      }
+      if (_and) {
+        DatamartDefinition _datamartDef_1 = dat.getDatamartDef();
+        String _name = _datamartDef_1.getName();
+        HashMap<String, String> _filterMap = this.getFilterMap(dat);
+        usedFilterMap.put(_name, _filterMap);
+      }
+    }
+    return usedFilterMap;
+  }
+  
+  public void fillResultWithFilter(final EList<EventBrokerDataMart> datamarts, final HashMap<String, HashMap<String, String>> usedDatamartsFilterMap, final ArrayList<EObject> result) {
+    for (final EventBrokerDataMart dat : datamarts) {
+      boolean _and = false;
+      boolean _and_1 = false;
+      boolean _and_2 = false;
+      boolean _notEquals = (!Objects.equal(dat, null));
+      if (!_notEquals) {
+        _and_2 = false;
+      } else {
+        DatamartDefinition _datamartDef = dat.getDatamartDef();
+        boolean _notEquals_1 = (!Objects.equal(_datamartDef, null));
+        _and_2 = _notEquals_1;
+      }
+      if (!_and_2) {
+        _and_1 = false;
+      } else {
+        DatamartDefinition _datamartDef_1 = dat.getDatamartDef();
+        String _name = _datamartDef_1.getName();
+        boolean _containsKey = usedDatamartsFilterMap.containsKey(_name);
+        _and_1 = _containsKey;
+      }
+      if (!_and_1) {
+        _and = false;
+      } else {
+        DatamartDefinition _datamartDef_2 = dat.getDatamartDef();
+        String _name_1 = _datamartDef_2.getName();
+        HashMap<String, String> _get = usedDatamartsFilterMap.get(_name_1);
+        boolean _isEmpty = _get.isEmpty();
+        boolean _not = (!_isEmpty);
+        _and = _not;
+      }
+      if (_and) {
+        DatamartDefinition _datamartDef_3 = dat.getDatamartDef();
+        result.add(_datamartDef_3);
+      }
+    }
+  }
+  
+  public CharSequence getEventBrokerMsgs(final EList<EventBrokerDataMart> datamarts) {
+    StringConcatenation _builder = new StringConcatenation();
+    {
+      for(final EventBrokerDataMart datamart : datamarts) {
+        _builder.append("eventBroker.send(\"");
+        String _filter = datamart.getFilter();
+        _builder.append(_filter, "");
+        _builder.append("/clear\", selectedItem);");
+        _builder.newLineIfNotEmpty();
+        _builder.append("eventBroker.send(\"");
+        String _filter_1 = datamart.getFilter();
+        _builder.append(_filter_1, "");
+        _builder.append("\", selectedItem);");
+        _builder.newLineIfNotEmpty();
+      }
+    }
+    return _builder;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLValidator.java b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLValidator.java
new file mode 100644
index 0000000..7275ac1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.datamartdsl/xtend-gen/org/eclipse/osbp/xtext/datamartdsl/validation/DatamartDSLValidator.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2013, 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.datamartdsl.validation;
+
+import org.eclipse.osbp.xtext.datamartdsl.Activator;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
+import org.eclipse.osbp.xtext.datamartdsl.validation.AbstractDatamartDSLValidator;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.validation.Check;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("all")
+public class DatamartDSLValidator extends AbstractDatamartDSLValidator {
+  @Check
+  public void checkCommercialLicensed(final DatamartDefinition datamart) {
+    DatamartSource _source = datamart.getSource();
+    if ((_source instanceof DatamartTask)) {
+      BundleContext _context = Activator.getContext();
+      Bundle[] _bundles = _context.getBundles();
+      for (final Bundle b : _bundles) {
+        String _symbolicName = b.getSymbolicName();
+        boolean _startsWith = _symbolicName.startsWith("net.osbee.bpm");
+        if (_startsWith) {
+          return;
+        }
+      }
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("BPM is needed and not yet licensed. License BPM at www.osbee.net");
+      this.info(_builder.toString(), datamart, 
+        null);
+    }
+    DatamartSource _source_1 = datamart.getSource();
+    if ((_source_1 instanceof DatamartCube)) {
+      BundleContext _context_1 = Activator.getContext();
+      Bundle[] _bundles_1 = _context_1.getBundles();
+      for (final Bundle b_1 : _bundles_1) {
+        String _symbolicName_1 = b_1.getSymbolicName();
+        boolean _startsWith_1 = _symbolicName_1.startsWith("net.osbee.xtext.cubedsl");
+        if (_startsWith_1) {
+          return;
+        }
+      }
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("Cube is needed and not yet licensed. License Cube at www.osbee.net");
+      this.info(_builder_1.toString(), datamart, 
+        null);
+    }
+  }
+  
+  @Check
+  public void checkSecurityLicensed(final DatamartRole role) {
+    BundleContext _context = Activator.getContext();
+    Bundle[] _bundles = _context.getBundles();
+    for (final Bundle b : _bundles) {
+      String _symbolicName = b.getSymbolicName();
+      boolean _startsWith = _symbolicName.startsWith("net.osbee.xtext.organization");
+      if (_startsWith) {
+        return;
+      }
+    }
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("Authorization is needed and not yet licensed. License Authorization at www.osbee.net");
+    this.info(_builder.toString(), role, 
+      null);
+  }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..b3b4c29
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,99 @@
+<?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.datamartdsl</groupId>
+	<artifactId>org.eclipse.osbp.xtext.datamartdsl.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.datamartdsl</module>
+		<!-- <module>org.eclipse.osbp.xtext.datamartdsl.sdk</module> -->
+		<module>org.eclipse.osbp.xtext.datamartdsl.tests</module>
+		<module>org.eclipse.osbp.xtext.datamartdsl.ui</module>
+		<module>org.eclipse.osbp.xtext.datamartdsl.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>